[libcxx-commits] [libcxx] 3f05d04 - [libc++] Update status after Varna meeting.
Mark de Wever via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 19 07:55:35 PDT 2023
Author: Mark de Wever
Date: 2023-06-19T16:55:30+02:00
New Revision: 3f05d044f491b97596fdaab7614f81cfb70ba54d
URL: https://github.com/llvm/llvm-project/commit/3f05d044f491b97596fdaab7614f81cfb70ba54d
DIFF: https://github.com/llvm/llvm-project/commit/3f05d044f491b97596fdaab7614f81cfb70ba54d.diff
LOG: [libc++] Update status after Varna meeting.
This updates:
- The status tables
- Feature test macros
- New headers for modules
The latter avoids forgetting about modules when implementing the feature
in a new header.
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D153192
Added:
libcxx/modules/std/hazard_pointer.cppm
libcxx/modules/std/rcu.cppm
libcxx/modules/std/text_encoding.cppm
libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp
Modified:
libcxx/docs/FeatureTestMacroTable.rst
libcxx/docs/Status/Cxx2cIssues.csv
libcxx/docs/Status/Cxx2cPapers.csv
libcxx/docs/Status/FormatIssues.csv
libcxx/include/version
libcxx/modules/CMakeLists.txt
libcxx/modules/std.cppm
libcxx/test/std/language.support/support.limits/support.limits.general/bitset.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/map.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/set.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/type_traits.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.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 f24e210926473..45e580f397756 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -21,359 +21,391 @@ 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`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__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_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`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__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`` ``202106L``
- ------------------------------------------------- -----------------
- ``__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`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__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`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__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_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`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__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`` ``202106L``
+ --------------------------------------------------- -----------------
+ ``__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`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__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`` ``202106L``
- ------------------------------------------------- -----------------
- ``__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_is_scoped_enum`` ``202011L``
- ------------------------------------------------- -----------------
- ``__cpp_lib_mdspan`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_move_only_function`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_optional`` ``202110L``
- ------------------------------------------------- -----------------
- ``__cpp_lib_out_ptr`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_as_rvalue`` ``202207L``
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_chunk`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_chunk_by`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_iota`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_join_with`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_slide`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_starts_ends_with`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__cpp_lib_ranges_to_container`` *unimplemented*
- ------------------------------------------------- -----------------
- ``__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_underlying`` ``202102L``
- ------------------------------------------------- -----------------
- ``__cpp_lib_unreachable`` ``202202L``
- ------------------------------------------------- -----------------
+ ---------------------------------------------------------------------
+ ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L``
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_allocate_at_least`` ``202106L``
+ --------------------------------------------------- -----------------
+ ``__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_is_scoped_enum`` ``202011L``
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_mdspan`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_move_only_function`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_optional`` ``202110L``
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_out_ptr`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_as_rvalue`` ``202207L``
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_chunk`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_chunk_by`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_iota`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_join_with`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_slide`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_starts_ends_with`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_to_container`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__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_unreachable`` ``202202L``
+ --------------------------------------------------- -----------------
**C++ 26**
- ===================================================================
+ ---------------------------------------------------------------------
+ ``__cpp_lib_associative_heterogeneous_insertion`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_bind_back`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_bind_front`` ``202306L``
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_bitset`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_copyable_function`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_fstream_native_handle`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_function_ref`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_hazard_pointer`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_ratio`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_rcu`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_smart_ptr_owner_equality`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_sstream_from_string_view`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_submdspan`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_text_encoding`` *unimplemented*
+ --------------------------------------------------- -----------------
+ ``__cpp_lib_within_lifetime`` *unimplemented*
+ =================================================== =================
diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv
index b1d423e127f26..00da9135e0aae 100644
--- a/libcxx/docs/Status/Cxx2cIssues.csv
+++ b/libcxx/docs/Status/Cxx2cIssues.csv
@@ -1,5 +1,22 @@
"Issue #","Issue Name","Meeting","Status","First released version","Labels"
+"`2994 <https://wg21.link/LWG2994>`__","Needless UB for ``basic_string`` and ``basic_string_view``","Varna June 2023","","",""
+"`3884 <https://wg21.link/LWG3884>`__","``flat_foo`` is missing allocator-extended copy/move constructors","Varna June 2023","","","|flat_containers|"
+"`3885 <https://wg21.link/LWG3885>`__","``op`` should be in [zombie.names]","Varna June 2023","","",""
+"`3887 <https://wg21.link/LWG3887>`__","Version macro for ``allocate_at_least``","Varna June 2023","","",""
+"`3893 <https://wg21.link/LWG3893>`__","LWG 3661 broke ``atomic<shared_ptr<T>> a; a = nullptr;``","Varna June 2023","","",""
+"`3894 <https://wg21.link/LWG3894>`__","``generator::promise_type::yield_value(ranges::elements_of<Rng, Alloc>)`` should not be ``noexcept``","Varna June 2023","","",""
+"`3903 <https://wg21.link/LWG3903>`__","span destructor is redundantly noexcept","Varna June 2023","","",""
+"`3904 <https://wg21.link/LWG3904>`__","``lazy_split_view::outer-iterator``'s const-converting constructor isn't setting ``trailing_empty_``","Varna June 2023","","","|ranges|"
+"`3905 <https://wg21.link/LWG3905>`__","Type of ``std::fexcept_t``","Varna June 2023","","",""
+"`3912 <https://wg21.link/LWG3912>`__","``enumerate_view::iterator::operator-`` should be ``noexcept``","Varna June 2023","","","|ranges|"
+"`3914 <https://wg21.link/LWG3914>`__","Inconsistent template-head of ``ranges::enumerate_view``","Varna June 2023","","","|ranges|"
+"`3915 <https://wg21.link/LWG3915>`__","Redundant paragraph about expression variations","Varna June 2023","","","|ranges|"
+"`3925 <https://wg21.link/LWG3925>`__","Concept ``formattable``'s definition is incorrect","Varna June 2023","|In Progress|","","|format|"
+"`3927 <https://wg21.link/LWG3927>`__","Unclear preconditions for ``operator[]`` for sequence containers","Varna June 2023","","",""
+"`3935 <https://wg21.link/LWG3935>`__","``template<class X> constexpr complex& operator=(const complex<X>&)`` has no specification","Varna June 2023","","",""
+"`3938 <https://wg21.link/LWG3938>`__","Cannot use ``std::expected`` monadic ops with move-only ``error_type``","Varna June 2023","","",""
+"`3940 <https://wg21.link/LWG3940>`__","``std::expected<void, E>::value()`` also needs ``E`` to be copy constructible","Varna June 2023","","",""
"","","","","",""
"`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",""
-"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0",""
+"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0","|format|"
"","","","","",""
diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv
index 8b6942024d865..494e70f22a356 100644
--- a/libcxx/docs/Status/Cxx2cPapers.csv
+++ b/libcxx/docs/Status/Cxx2cPapers.csv
@@ -1,2 +1,29 @@
"Paper #","Group","Paper Name","Meeting","Status","First released version","Labels"
+"`P2497R0 <https://wg21.link/P2497R0>`__","LWG","Testing for success or failure of ``<charconv>`` functions","Varna June 2023","","",""
+"`P2592R3 <https://wg21.link/P2592R3>`__","LWG","Hashing support for ``std::chrono`` value classes","Varna June 2023","","",""
+"`P2587R3 <https://wg21.link/P2587R3>`__","LWG","``to_string`` or not ``to_string``","Varna June 2023","","","|format|"
+"`P2562R1 <https://wg21.link/P2562R1>`__","LWG","``constexpr`` Stable Sorting","Varna June 2023","","",""
+"`P2545R4 <https://wg21.link/P2545R4>`__","LWG","Read-Copy Update (RCU)","Varna June 2023","","",""
+"`P2530R3 <https://wg21.link/P2530R3>`__","LWG","Hazard Pointers for C++26","Varna June 2023","","",""
+"`P2538R1 <https://wg21.link/P2538R1>`__","LWG","ADL-proof ``std::projected``","Varna June 2023","","","|ranges|"
+"`P2495R3 <https://wg21.link/P2495R3>`__","LWG","Interfacing ``stringstreams`` with ``string_view``","Varna June 2023","","",""
+"`P2510R3 <https://wg21.link/P2510R3>`__","LWG","Formatting pointers","Varna June 2023","|In Progress|","","|format|"
+"`P2198R7 <https://wg21.link/P2198R7>`__","LWG","Freestanding Feature-Test Macros and Implementation-Defined Extensions","Varna June 2023","","",""
+"`P2338R4 <https://wg21.link/P2338R4>`__","LWG","Freestanding Library: Character primitives and the C library","Varna June 2023","","",""
+"`P2013R5 <https://wg21.link/P2013R5>`__","LWG","Freestanding Language: Optional ``::operator new``","Varna June 2023","","",""
+"`P2363R5 <https://wg21.link/P2363R5>`__","LWG","Extending associative containers with the remaining heterogeneous overloads","Varna June 2023","","",""
+"`P1901R2 <https://wg21.link/P1901R2>`__","LWG","Enabling the Use of ``weak_ptr`` as Keys in Unordered Associative Containers","Varna June 2023","","",""
+"`P1885R12 <https://wg21.link/P1885R12>`__","LWG","Naming Text Encodings to Demystify Them","Varna June 2023","","",""
+"`P0792R14 <https://wg21.link/P0792R14>`__","LWG","``function_ref``: a type-erased callable reference","Varna June 2023","","",""
+"`P2874R2 <https://wg21.link/P2874R2>`__","LWG","Mandating Annex D Require No More","Varna June 2023","","",""
+"`P2757R3 <https://wg21.link/P2757R3>`__","LWG","Type-checking format args","Varna June 2023","","","|format|"
+"`P2637R3 <https://wg21.link/P2637R3>`__","LWG","Member ``visit``","Varna June 2023","","","|format|"
+"`P2641R4 <https://wg21.link/P2641R4>`__","CWG, LWG","Checking if a ``union`` alternative is active","Varna June 2023","","",""
+"`P1759R6 <https://wg21.link/P1759R6>`__","LWG","Native handles and file streams","Varna June 2023","","",""
+"`P2697R1 <https://wg21.link/P2697R1>`__","LWG","Interfacing ``bitset`` with ``string_view``","Varna June 2023","","",""
+"`P1383R2 <https://wg21.link/P1383R2>`__","LWG","More ``constexpr`` for ``<cmath>`` and ``<complex>``","Varna June 2023","","",""
+"`P2734R0 <https://wg21.link/P2734R0>`__","LWG","Adding the new SI prefixes","Varna June 2023","","",""
+"`P2548R6 <https://wg21.link/P2548R6>`__","LWG","``copyable_function``","Varna June 2023","","",""
+"`P2714R1 <https://wg21.link/P2714R1>`__","LWG","Bind front and back to NTTP callables","Varna June 2023","","",""
+"`P2630R4 <https://wg21.link/P2630R4>`__","LWG","``submdspan``","Varna June 2023","","",""
"","","","","","",""
diff --git a/libcxx/docs/Status/FormatIssues.csv b/libcxx/docs/Status/FormatIssues.csv
index 20a0be7fc7bb2..0ac1fa6108750 100644
--- a/libcxx/docs/Status/FormatIssues.csv
+++ b/libcxx/docs/Status/FormatIssues.csv
@@ -14,6 +14,9 @@ Number,Name,Standard,Assignee,Status,First released version
"`P2675R1 <https://wg21.link/P2675R1>`__","``format``'s width estimation is too approximate and not forward compatible","C++23","Mark de Wever","|Complete|", Clang 17
"`P2572R1 <https://wg21.link/P2572R1>`__","``std::format`` fill character allowances","C++23","Mark de Wever","|Complete|", Clang 17
"`P2693R1 <https://wg21.link/P2693R1>`__","Formatting ``thread::id`` and ``stacktrace``","C++23","Mark de Wever","|In progress|"
+"`P2510R3 <https://wg21.link/P2510R3>`__","Formatting pointers","C++26","Mark de Wever","|In Progress|",
+"`P2757R3 <https://wg21.link/P2757R3>`__","Type-checking format args","C++26","","",
+"`P2637R3 <https://wg21.link/P2637R3>`__","Member ``visit``","C++26","","",
`P1361 <https://wg21.link/P1361>`_,"Integration of chrono with text formatting","C++20",Mark de Wever,|In Progress|,
`P2372 <https://wg21.link/P2372>`__,"Fixing locale handling in chrono formatters","C++20",Mark de Wever,|In Progress|,
"`P2419R2 <https://wg21.link/P2419R2>`__","Clarify handling of encodings in localized formatting of chrono types","C++23",
diff --git a/libcxx/include/version b/libcxx/include/version
index a1525397b988a..5f69eff42b0a1 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -28,6 +28,8 @@ __cpp_lib_array_constexpr 201811L <array> <iterato
__cpp_lib_as_const 201510L <utility>
__cpp_lib_associative_heterogeneous_erasure 202110L <map> <set> <unordered_map>
<unordered_set>
+__cpp_lib_associative_heterogeneous_insertion 202306L <map> <set> <unordered_map>
+ <unordered_set>
__cpp_lib_assume_aligned 201811L <memory>
__cpp_lib_atomic_flag_test 201907L <atomic>
__cpp_lib_atomic_float 201711L <atomic>
@@ -38,10 +40,13 @@ __cpp_lib_atomic_shared_ptr 201711L <atomic>
__cpp_lib_atomic_value_initialization 201911L <atomic> <memory>
__cpp_lib_atomic_wait 201907L <atomic>
__cpp_lib_barrier 201907L <barrier>
-__cpp_lib_bind_back 202202L <functional>
-__cpp_lib_bind_front 201907L <functional>
+__cpp_lib_bind_back 202306L <functional>
+ 202202L // C++23
+__cpp_lib_bind_front 202306L <functional>
+ 201907L // C++20
__cpp_lib_bit_cast 201806L <bit>
__cpp_lib_bitops 201907L <bit>
+__cpp_lib_bitset 202306L <bitset>
__cpp_lib_bool_constant 201505L <type_traits>
__cpp_lib_bounded_array_traits 201902L <type_traits>
__cpp_lib_boyer_moore_searcher 201603L <functional>
@@ -72,6 +77,7 @@ __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_copyable_function 202306L <functional>
__cpp_lib_coroutine 201902L <coroutine>
__cpp_lib_destroying_delete 201806L <new>
__cpp_lib_enable_shared_from_this 201603L <memory>
@@ -88,11 +94,14 @@ __cpp_lib_format 202106L <format>
__cpp_lib_format_ranges 202207L <format>
__cpp_lib_formatters 202302L <stacktrace> <thread>
__cpp_lib_forward_like 202207L <utility>
+__cpp_lib_fstream_native_handle 202306L <fstream>
+__cpp_lib_function_ref 202306L <functional>
__cpp_lib_gcd_lcm 201606L <numeric>
__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>
__cpp_lib_has_unique_object_representations 201606L <type_traits>
+__cpp_lib_hazard_pointer 202306L <hazard_pointer>
__cpp_lib_hypot 201603L <cmath>
__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector>
__cpp_lib_int_pow2 202002L <bit>
@@ -155,7 +164,9 @@ __cpp_lib_ranges_to_container 202202L <deque> <forward
<set> <stack> <string>
<unordered_map> <unordered_set> <vector>
__cpp_lib_ranges_zip 202110L <ranges> <tuple> <utility>
+__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_remove_cvref 201711L <type_traits>
__cpp_lib_result_of_sfinae 201210L <functional> <type_traits>
@@ -170,10 +181,12 @@ __cpp_lib_shared_ptr_weak_type 201606L <memory>
__cpp_lib_shared_timed_mutex 201402L <shared_mutex>
__cpp_lib_shift 201806L <algorithm>
__cpp_lib_smart_ptr_for_overwrite 202002L <memory>
+__cpp_lib_smart_ptr_owner_equality 202306L <memory>
__cpp_lib_source_location 201907L <source_location>
__cpp_lib_span 202002L <span>
__cpp_lib_spanstream 202106L <spanstream>
__cpp_lib_ssize 201902L <iterator>
+__cpp_lib_sstream_from_string_view 202306L <sstream>
__cpp_lib_stacktrace 202011L <stacktrace>
__cpp_lib_starts_ends_with 201711L <string> <string_view>
__cpp_lib_stdatomic_h 202011L <stdatomic.h>
@@ -182,11 +195,14 @@ __cpp_lib_string_resize_and_overwrite 202110L <string>
__cpp_lib_string_udls 201304L <string>
__cpp_lib_string_view 201803L <string> <string_view>
201606L // C++17
+__cpp_lib_submdspan 202306L <mdspan>
__cpp_lib_syncbuf 201803L <syncstream>
+__cpp_lib_text_encoding 202306L <text_encoding>
__cpp_lib_three_way_comparison 201907L <compare>
__cpp_lib_to_address 201711L <memory>
__cpp_lib_to_array 201907L <array>
__cpp_lib_to_chars 201611L <charconv>
+__cpp_lib_to_string 202306L <string>
__cpp_lib_to_underlying 202102L <utility>
__cpp_lib_transformation_trait_aliases 201304L <type_traits>
__cpp_lib_transparent_operators 201510L <functional> <memory>
@@ -201,6 +217,7 @@ __cpp_lib_unreachable 202202L <utility>
__cpp_lib_unwrap_ref 201811L <functional>
__cpp_lib_variant 202102L <variant>
__cpp_lib_void_t 201411L <type_traits>
+__cpp_lib_within_lifetime 202306L <type_traits>
*/
@@ -423,12 +440,29 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_stdatomic_h 202011L
# define __cpp_lib_string_contains 202011L
# define __cpp_lib_string_resize_and_overwrite 202110L
+// # define __cpp_lib_to_string 202306L
# define __cpp_lib_to_underlying 202102L
# define __cpp_lib_unreachable 202202L
#endif
#if _LIBCPP_STD_VER >= 26
-
+// # define __cpp_lib_associative_heterogeneous_insertion 202306L
+# 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_copyable_function 202306L
+// # define __cpp_lib_fstream_native_handle 202306L
+// # define __cpp_lib_function_ref 202306L
+// # define __cpp_lib_hazard_pointer 202306L
+// # define __cpp_lib_ratio 202306L
+// # define __cpp_lib_rcu 202306L
+// # define __cpp_lib_smart_ptr_owner_equality 202306L
+// # define __cpp_lib_sstream_from_string_view 202306L
+// # define __cpp_lib_submdspan 202306L
+// # define __cpp_lib_text_encoding 202306L
+// # define __cpp_lib_within_lifetime 202306L
#endif
// clang-format on
diff --git a/libcxx/modules/CMakeLists.txt b/libcxx/modules/CMakeLists.txt
index 0070780a65dd1..d24ddb0efc7fa 100644
--- a/libcxx/modules/CMakeLists.txt
+++ b/libcxx/modules/CMakeLists.txt
@@ -56,6 +56,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/functional.cppm
std/future.cppm
std/generator.cppm
+ std/hazard_pointer.cppm
std/initializer_list.cppm
std/iomanip.cppm
std/ios.cppm
@@ -83,6 +84,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/random.cppm
std/ranges.cppm
std/ratio.cppm
+ std/rcu.cppm
std/regex.cppm
std/scoped_allocator.cppm
std/semaphore.cppm
@@ -104,6 +106,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/strstream.cppm
std/syncstream.cppm
std/system_error.cppm
+ std/text_encoding.cppm
std/thread.cppm
std/tuple.cppm
std/type_traits.cppm
diff --git a/libcxx/modules/std.cppm b/libcxx/modules/std.cppm
index d01e167169e53..fcd7d55bbed0a 100644
--- a/libcxx/modules/std.cppm
+++ b/libcxx/modules/std.cppm
@@ -61,6 +61,7 @@ export import :fstream;
export import :functional;
export import :future;
export import :generator;
+export import :hazard_pointer;
export import :initializer_list;
export import :iomanip;
export import :ios;
@@ -86,6 +87,7 @@ export import :queue;
export import :random;
export import :ranges;
export import :ratio;
+export import :rcu;
export import :regex;
export import :scoped_allocator;
export import :semaphore;
@@ -106,6 +108,7 @@ export import :string_view;
export import :strstream;
export import :syncstream;
export import :system_error;
+export import :text_encoding;
export import :thread;
export import :tuple;
export import :type_traits;
diff --git a/libcxx/modules/std/hazard_pointer.cppm b/libcxx/modules/std/hazard_pointer.cppm
new file mode 100644
index 0000000000000..84b83f55b31fb
--- /dev/null
+++ b/libcxx/modules/std/hazard_pointer.cppm
@@ -0,0 +1,30 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+module;
+#if __has_include(<hazard_pointer>)
+# error "include this header unconditionally and uncomment the exported symbols"
+# include <hazard_pointer>
+#endif
+
+export module std:hazard_pointer;
+export namespace std {
+#if 0
+# if _LIBCPP_STD_VER >= 23
+ // 4.1.3, class template hazard_pointer_obj_base
+ using std::hazard_pointer_obj_base;
+ // 4.1.4, class hazard_pointer
+ using std::hazard_pointer;
+ // 4.1.5, Construct non-empty hazard_pointer
+ using std::make_hazard_pointer;
+ // 4.1.6, Hazard pointer swap
+ using std::swap;
+# endif // _LIBCPP_STD_VER >= 23
+#endif
+} // namespace std
diff --git a/libcxx/modules/std/rcu.cppm b/libcxx/modules/std/rcu.cppm
new file mode 100644
index 0000000000000..fb5e5e1a5066a
--- /dev/null
+++ b/libcxx/modules/std/rcu.cppm
@@ -0,0 +1,29 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+module;
+#if __has_include(<rcu>)
+# error "include this header unconditionally and uncomment the exported symbols"
+# include <rcu>
+#endif
+
+export module std:rcu;
+export namespace std {
+#if 0
+# if _LIBCPP_STD_VER >= 23
+ // 2.2.3, class template rcu_obj_base using std::rcu_obj_base;
+ // 2.2.4, class rcu_domain
+ using std::rcu_domain;
+ using std::rcu_default_domain();
+ using std::rcu_barrier;
+ using std::rcu_retire;
+ using std::rcu_synchronize;
+# endif // _LIBCPP_STD_VER >= 23
+#endif
+} // namespace std
diff --git a/libcxx/modules/std/text_encoding.cppm b/libcxx/modules/std/text_encoding.cppm
new file mode 100644
index 0000000000000..dcbaa734a6856
--- /dev/null
+++ b/libcxx/modules/std/text_encoding.cppm
@@ -0,0 +1,26 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+module;
+#if __has_include(<text_encoding>)
+# error "include this header unconditionally and uncomment the exported symbols"
+# include <text_encoding>
+#endif
+
+export module std:text_encoding;
+export namespace std {
+#if 0
+# if _LIBCPP_STD_VER >= 23
+ using std::text_encoding;
+
+ // hash support
+ using std::hash;
+# endif // _LIBCPP_STD_VER >= 23
+#endif
+} // namespace std
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
index bd1f5feddac0d..e850479d99e1c 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp
@@ -16,6 +16,7 @@
// Test the feature test macros defined by <bitset>
/* Constant Value
+ __cpp_lib_bitset 202306L [C++26]
__cpp_lib_constexpr_bitset 202207L [C++23]
*/
@@ -24,30 +25,50 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should be defined in c++23"
# endif
@@ -57,6 +78,19 @@
#elif TEST_STD_VER > 23
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bitset
+# error "__cpp_lib_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_bitset != 202306L
+# error "__cpp_lib_bitset should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp
new file mode 100644
index 0000000000000..981f5420ff7e0
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp
@@ -0,0 +1,73 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+
+// UNSUPPORTED: no-localization
+
+// <fstream>
+
+// Test the feature test macros defined by <fstream>
+
+/* Constant Value
+ __cpp_lib_fstream_native_handle 202306L [C++26]
+*/
+
+#include <fstream>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should be defined in c++26"
+# endif
+# if __cpp_lib_fstream_native_handle != 202306L
+# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle 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/functional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
index 79cb615c518f3..f14b127e51951 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
@@ -17,9 +17,13 @@
/* Constant Value
__cpp_lib_bind_back 202202L [C++23]
+ 202306L [C++26]
__cpp_lib_bind_front 201907L [C++20]
+ 202306L [C++26]
__cpp_lib_boyer_moore_searcher 201603L [C++17]
__cpp_lib_constexpr_functional 201907L [C++20]
+ __cpp_lib_copyable_function 202306L [C++26]
+ __cpp_lib_function_ref 202306L [C++26]
__cpp_lib_invoke 201411L [C++17]
__cpp_lib_invoke_r 202106L [C++23]
__cpp_lib_move_only_function 202110L [C++23]
@@ -52,6 +56,14 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_invoke
# error "__cpp_lib_invoke should not be defined before c++17"
# endif
@@ -102,6 +114,14 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_invoke
# error "__cpp_lib_invoke should not be defined before c++17"
# endif
@@ -161,6 +181,14 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++17"
# endif
@@ -232,6 +260,14 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++20"
# endif
@@ -318,6 +354,14 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++23"
# endif
@@ -386,8 +430,8 @@
# ifndef __cpp_lib_bind_back
# error "__cpp_lib_bind_back should be defined in c++26"
# endif
-# if __cpp_lib_bind_back != 202202L
-# error "__cpp_lib_bind_back should have the value 202202L in c++26"
+# if __cpp_lib_bind_back != 202306L
+# error "__cpp_lib_bind_back should have the value 202306L in c++26"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_bind_back
@@ -398,8 +442,8 @@
# ifndef __cpp_lib_bind_front
# error "__cpp_lib_bind_front should be defined in c++26"
# endif
-# if __cpp_lib_bind_front != 201907L
-# error "__cpp_lib_bind_front should have the value 201907L in c++26"
+# if __cpp_lib_bind_front != 202306L
+# error "__cpp_lib_bind_front should have the value 202306L in c++26"
# endif
# ifndef __cpp_lib_boyer_moore_searcher
@@ -416,6 +460,32 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should be defined in c++26"
+# endif
+# if __cpp_lib_copyable_function != 202306L
+# error "__cpp_lib_copyable_function should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should be defined in c++26"
+# endif
+# if __cpp_lib_function_ref != 202306L
+# error "__cpp_lib_function_ref should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
index 28d10cd3e7f1f..8599c54e24923 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp
@@ -15,15 +15,16 @@
// Test the feature test macros defined by <map>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_generic_associative_lookup 201304L [C++14]
- __cpp_lib_map_try_emplace 201411L [C++17]
- __cpp_lib_node_extract 201606L [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_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_generic_associative_lookup 201304L [C++14]
+ __cpp_lib_map_try_emplace 201411L [C++17]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <map>
@@ -39,6 +40,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -73,6 +78,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -113,6 +122,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -162,6 +175,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -223,6 +240,10 @@
# endif
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -293,6 +314,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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/mdspan.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
index c2da617f42cc1..e47d678b254ef 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp
@@ -15,8 +15,9 @@
// Test the feature test macros defined by <mdspan>
-/* Constant Value
- __cpp_lib_mdspan 202207L [C++23]
+/* Constant Value
+ __cpp_lib_mdspan 202207L [C++23]
+ __cpp_lib_submdspan 202306L [C++26]
*/
#include <mdspan>
@@ -28,24 +29,40 @@
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 17
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 20
# ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION)
@@ -61,6 +78,10 @@
# endif
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER > 23
# if !defined(_LIBCPP_VERSION)
@@ -76,5 +97,18 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should be defined in c++26"
+# endif
+# if __cpp_lib_submdspan != 202306L
+# error "__cpp_lib_submdspan should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan 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/memory.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
index 7db7c956d3751..02559d1340531 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp
@@ -33,6 +33,7 @@
201707L [C++20]
__cpp_lib_shared_ptr_weak_type 201606L [C++17]
__cpp_lib_smart_ptr_for_overwrite 202002L [C++20]
+ __cpp_lib_smart_ptr_owner_equality 202306L [C++26]
__cpp_lib_to_address 201711L [C++20]
__cpp_lib_transparent_operators 201210L [C++14]
201510L [C++17]
@@ -103,6 +104,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20"
# endif
@@ -176,6 +181,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20"
# endif
@@ -270,6 +279,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20"
# endif
@@ -388,6 +401,10 @@
# endif
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++20"
# endif
@@ -521,6 +538,10 @@
# endif
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++23"
# endif
@@ -654,6 +675,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26"
+# endif
+# if __cpp_lib_smart_ptr_owner_equality != 202306L
+# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp
new file mode 100644
index 0000000000000..f782c24898b43
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.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
+
+// <ratio>
+
+// Test the feature test macros defined by <ratio>
+
+/* Constant Value
+ __cpp_lib_ratio 202306L [C++26]
+*/
+
+#include <ratio>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ratio
+# error "__cpp_lib_ratio should be defined in c++26"
+# endif
+# if __cpp_lib_ratio != 202306L
+# error "__cpp_lib_ratio should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio 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/set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
index 23f93805cc169..241b66b2bfc31 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp
@@ -15,14 +15,15 @@
// Test the feature test macros defined by <set>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_generic_associative_lookup 201304L [C++14]
- __cpp_lib_node_extract 201606L [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_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_generic_associative_lookup 201304L [C++14]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <set>
@@ -38,6 +39,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -68,6 +73,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -104,6 +113,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -146,6 +159,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -200,6 +217,10 @@
# endif
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -263,6 +284,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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/sstream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp
new file mode 100644
index 0000000000000..78e17e5f1ddb5
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp
@@ -0,0 +1,73 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+
+// UNSUPPORTED: no-localization
+
+// <sstream>
+
+// Test the feature test macros defined by <sstream>
+
+/* Constant Value
+ __cpp_lib_sstream_from_string_view 202306L [C++26]
+*/
+
+#include <sstream>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_sstream_from_string_view != 202306L
+# error "__cpp_lib_sstream_from_string_view should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view 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/string.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
index e869fedbdaaf2..5902bdbd15521 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
@@ -28,6 +28,7 @@
__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>
@@ -79,6 +80,10 @@
# error "__cpp_lib_string_view should not be defined before c++17"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_allocator_traits_is_always_equal
@@ -128,6 +133,10 @@
# error "__cpp_lib_string_view should not be defined before c++17"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 17
# ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -186,6 +195,10 @@
# error "__cpp_lib_string_view should have the value 201606L in c++17"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 20
# ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -262,6 +275,10 @@
# error "__cpp_lib_string_view should have the value 201803L in c++20"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -353,6 +370,19 @@
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_string
+# error "__cpp_lib_to_string should be defined in c++23"
+# endif
+# if __cpp_lib_to_string != 202306L
+# error "__cpp_lib_to_string should have the value 202306L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#elif TEST_STD_VER > 23
# ifndef __cpp_lib_allocator_traits_is_always_equal
@@ -444,5 +474,18 @@
# error "__cpp_lib_string_view should have the value 201803L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_string
+# error "__cpp_lib_to_string should be defined in c++26"
+# endif
+# if __cpp_lib_to_string != 202306L
+# error "__cpp_lib_to_string should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string 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/type_traits.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
index a851b1bbb19d4..b1dd76b98720d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp
@@ -38,6 +38,7 @@
__cpp_lib_type_identity 201806L [C++20]
__cpp_lib_type_trait_variable_templates 201510L [C++17]
__cpp_lib_void_t 201411L [C++17]
+ __cpp_lib_within_lifetime 202306L [C++26]
*/
#include <type_traits>
@@ -133,6 +134,10 @@
# error "__cpp_lib_void_t should not be defined before c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_bool_constant
@@ -238,6 +243,10 @@
# error "__cpp_lib_void_t should not be defined before c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 17
# ifndef __cpp_lib_bool_constant
@@ -367,6 +376,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 20
# ifndef __cpp_lib_bool_constant
@@ -529,6 +542,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 23
# ifndef __cpp_lib_bool_constant
@@ -703,6 +720,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER > 23
# ifndef __cpp_lib_bool_constant
@@ -877,5 +898,18 @@
# error "__cpp_lib_void_t should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should be defined in c++26"
+# endif
+# if __cpp_lib_within_lifetime != 202306L
+# error "__cpp_lib_within_lifetime should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime 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/unordered_map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
index 0e5b5985df60e..c3dfb78cfadd1 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp
@@ -15,15 +15,16 @@
// Test the feature test macros defined by <unordered_map>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_generic_unordered_lookup 201811L [C++20]
- __cpp_lib_node_extract 201606L [C++17]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_ranges_to_container 202202L [C++23]
- __cpp_lib_unordered_map_try_emplace 201411L [C++17]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_generic_unordered_lookup 201811L [C++20]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
+ __cpp_lib_unordered_map_try_emplace 201411L [C++17]
*/
#include <unordered_map>
@@ -39,6 +40,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -73,6 +78,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -110,6 +119,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -156,6 +169,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -217,6 +234,10 @@
# endif
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -287,6 +308,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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/unordered_set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
index 8a3a8afd5b473..d215aec861564 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp
@@ -15,14 +15,15 @@
// Test the feature test macros defined by <unordered_set>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_generic_unordered_lookup 201811L [C++20]
- __cpp_lib_node_extract 201606L [C++17]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_ranges_to_container 202202L [C++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_generic_unordered_lookup 201811L [C++20]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <unordered_set>
@@ -38,6 +39,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -68,6 +73,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -101,6 +110,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -140,6 +153,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -194,6 +211,10 @@
# endif
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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
@@ -257,6 +278,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion 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 8443fb1d97513..dbad0e6b3cf0c 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,178 +15,194 @@
// 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 202106L [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_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]
- __cpp_lib_bind_front 201907L [C++20]
- __cpp_lib_bit_cast 201806L [C++20]
- __cpp_lib_bitops 201907L [C++20]
- __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_coroutine 201902L [C++20]
- __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_formatters 202302L [C++23]
- __cpp_lib_forward_like 202207L [C++23]
- __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_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_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_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]
- __cpp_lib_parallel_algorithm 201603L [C++17]
- __cpp_lib_polymorphic_allocator 201902L [C++20]
- __cpp_lib_quoted_string_io 201304L [C++14]
- __cpp_lib_ranges 202106L [C++20]
- __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_iota 202202L [C++23]
- __cpp_lib_ranges_join_with 202202L [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_raw_memory_algorithms 201606L [C++17]
- __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_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_source_location 201907L [C++20]
- __cpp_lib_span 202002L [C++20]
- __cpp_lib_spanstream 202106L [C++23]
- __cpp_lib_ssize 201902L [C++20]
- __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_syncbuf 201803L [C++20]
- __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]
- __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_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]
+/* Constant Value
+ __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
+ __cpp_lib_addressof_constexpr 201603L [C++17]
+ __cpp_lib_allocate_at_least 202106L [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_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_formatters 202302L [C++23]
+ __cpp_lib_forward_like 202207L [C++23]
+ __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_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_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]
+ __cpp_lib_parallel_algorithm 201603L [C++17]
+ __cpp_lib_polymorphic_allocator 201902L [C++20]
+ __cpp_lib_quoted_string_io 201304L [C++14]
+ __cpp_lib_ranges 202106L [C++20]
+ __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_iota 202202L [C++23]
+ __cpp_lib_ranges_join_with 202202L [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_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_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]
+ __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_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>
@@ -230,6 +246,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should not be defined before c++20"
# endif
@@ -286,6 +306,10 @@
# error "__cpp_lib_bitops should not be defined before c++20"
# endif
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should not be defined before c++17"
# endif
@@ -394,6 +418,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should not be defined before c++20"
# endif
@@ -446,6 +474,14 @@
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
@@ -466,6 +502,10 @@
# error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
# endif
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hypot
# error "__cpp_lib_hypot should not be defined before c++17"
# endif
@@ -678,10 +718,18 @@
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
# endif
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
@@ -734,6 +782,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined before c++20"
# endif
@@ -750,6 +802,10 @@
# error "__cpp_lib_ssize should not be defined before c++20"
# endif
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should not be defined before c++23"
# endif
@@ -778,10 +834,18 @@
# error "__cpp_lib_string_view should not be defined before c++17"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should not be defined before c++20"
# endif
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined before c++20"
# endif
@@ -798,6 +862,10 @@
# error "__cpp_lib_to_chars should not be defined before c++17"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif
@@ -850,6 +918,10 @@
# error "__cpp_lib_void_t should not be defined before c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_adaptor_iterator_pair_constructor
@@ -888,6 +960,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should not be defined before c++20"
# endif
@@ -944,6 +1020,10 @@
# error "__cpp_lib_bitops should not be defined before c++20"
# endif
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should not be defined before c++17"
# endif
@@ -1058,6 +1138,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should not be defined before c++20"
# endif
@@ -1113,6 +1197,14 @@
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
@@ -1136,6 +1228,10 @@
# error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
# endif
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_hypot
# error "__cpp_lib_hypot should not be defined before c++17"
# endif
@@ -1372,10 +1468,18 @@
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
# endif
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
@@ -1443,6 +1547,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined before c++20"
# endif
@@ -1459,6 +1567,10 @@
# error "__cpp_lib_ssize should not be defined before c++20"
# endif
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should not be defined before c++23"
# endif
@@ -1490,10 +1602,18 @@
# error "__cpp_lib_string_view should not be defined before c++17"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should not be defined before c++20"
# endif
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined before c++20"
# endif
@@ -1510,6 +1630,10 @@
# error "__cpp_lib_to_chars should not be defined before c++17"
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif
@@ -1574,6 +1698,10 @@
# error "__cpp_lib_void_t should not be defined before c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 17
# ifdef __cpp_lib_adaptor_iterator_pair_constructor
@@ -1630,6 +1758,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should not be defined before c++20"
# endif
@@ -1689,6 +1821,10 @@
# error "__cpp_lib_bitops should not be defined before c++20"
# endif
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++17"
# endif
@@ -1818,6 +1954,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should not be defined before c++20"
# endif
@@ -1894,6 +2034,14 @@
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should be defined in c++17"
# endif
@@ -1932,6 +2080,10 @@
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17"
# endif
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++17"
# endif
@@ -2231,6 +2383,10 @@
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should be defined in c++17"
# endif
@@ -2238,6 +2394,10 @@
# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
# endif
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
@@ -2326,6 +2486,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined before c++20"
# endif
@@ -2342,6 +2506,10 @@
# error "__cpp_lib_ssize should not be defined before c++20"
# endif
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should not be defined before c++23"
# endif
@@ -2376,10 +2544,18 @@
# error "__cpp_lib_string_view should have the value 201606L in c++17"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should not be defined before c++20"
# endif
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined before c++20"
# endif
@@ -2405,6 +2581,10 @@
# endif
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif
@@ -2484,6 +2664,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 20
# ifdef __cpp_lib_adaptor_iterator_pair_constructor
@@ -2540,6 +2724,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should be defined in c++20"
# endif
@@ -2671,6 +2859,10 @@
# endif
# endif
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++20"
# endif
@@ -2851,6 +3043,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should be defined in c++20"
# endif
@@ -2954,6 +3150,14 @@
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should be defined in c++20"
# endif
@@ -2995,6 +3199,10 @@
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20"
# endif
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++20"
# endif
@@ -3360,6 +3568,10 @@
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should be defined in c++20"
# endif
@@ -3367,6 +3579,10 @@
# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20"
# endif
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
@@ -3479,6 +3695,10 @@
# endif
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++20"
@@ -3510,6 +3730,10 @@
# error "__cpp_lib_ssize should have the value 201902L in c++20"
# endif
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should not be defined before c++23"
# endif
@@ -3547,6 +3771,10 @@
# error "__cpp_lib_string_view should have the value 201803L in c++20"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should be defined in c++20"
@@ -3560,6 +3788,10 @@
# endif
# endif
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++20"
@@ -3600,6 +3832,10 @@
# endif
# endif
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif
@@ -3685,6 +3921,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER == 23
# ifndef __cpp_lib_adaptor_iterator_pair_constructor
@@ -3756,6 +3996,10 @@
# endif
# endif
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should be defined in c++23"
# endif
@@ -3896,6 +4140,10 @@
# endif
# endif
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++23"
# endif
@@ -4097,6 +4345,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should be defined in c++23"
# endif
@@ -4218,6 +4470,14 @@
# error "__cpp_lib_forward_like should have the value 202207L in c++23"
# endif
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined before c++26"
+# endif
+
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should be defined in c++23"
# endif
@@ -4259,6 +4519,10 @@
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++23"
# endif
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++23"
# endif
@@ -4732,6 +4996,10 @@
# endif
# endif
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should be defined in c++23"
# endif
@@ -4739,6 +5007,10 @@
# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++23"
# endif
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should be defined in c++23"
@@ -4860,6 +5132,10 @@
# endif
# endif
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
+# endif
+
# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++23"
@@ -4900,6 +5176,10 @@
# error "__cpp_lib_ssize should have the value 201902L in c++23"
# endif
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should be defined in c++23"
@@ -4955,6 +5235,10 @@
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should be defined in c++23"
@@ -4968,6 +5252,10 @@
# endif
# endif
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++23"
@@ -5008,6 +5296,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_string
+# error "__cpp_lib_to_string should be defined in c++23"
+# endif
+# if __cpp_lib_to_string != 202306L
+# error "__cpp_lib_to_string should have the value 202306L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should be defined in c++23"
# endif
@@ -5099,6 +5400,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined before c++26"
+# endif
+
#elif TEST_STD_VER > 23
# ifndef __cpp_lib_adaptor_iterator_pair_constructor
@@ -5170,6 +5475,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"
+# endif
+# if __cpp_lib_associative_heterogeneous_insertion != 202306L
+# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_associative_heterogeneous_insertion
+# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_assume_aligned
# error "__cpp_lib_assume_aligned should be defined in c++26"
# endif
@@ -5274,8 +5592,8 @@
# ifndef __cpp_lib_bind_back
# error "__cpp_lib_bind_back should be defined in c++26"
# endif
-# if __cpp_lib_bind_back != 202202L
-# error "__cpp_lib_bind_back should have the value 202202L in c++26"
+# if __cpp_lib_bind_back != 202306L
+# error "__cpp_lib_bind_back should have the value 202306L in c++26"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_bind_back
@@ -5286,8 +5604,8 @@
# ifndef __cpp_lib_bind_front
# error "__cpp_lib_bind_front should be defined in c++26"
# endif
-# if __cpp_lib_bind_front != 201907L
-# error "__cpp_lib_bind_front should have the value 201907L in c++26"
+# if __cpp_lib_bind_front != 202306L
+# error "__cpp_lib_bind_front should have the value 202306L in c++26"
# endif
# ifndef __cpp_lib_bit_cast
@@ -5310,6 +5628,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_bitset
+# error "__cpp_lib_bitset should be defined in c++26"
+# endif
+# if __cpp_lib_bitset != 202306L
+# error "__cpp_lib_bitset should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_bitset
+# error "__cpp_lib_bitset should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++26"
# endif
@@ -5511,6 +5842,19 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should be defined in c++26"
+# endif
+# if __cpp_lib_copyable_function != 202306L
+# error "__cpp_lib_copyable_function should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_copyable_function
+# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_coroutine
# error "__cpp_lib_coroutine should be defined in c++26"
# endif
@@ -5632,6 +5976,32 @@
# error "__cpp_lib_forward_like should have the value 202207L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should be defined in c++26"
+# endif
+# if __cpp_lib_fstream_native_handle != 202306L
+# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_fstream_native_handle
+# error "__cpp_lib_fstream_native_handle should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should be defined in c++26"
+# endif
+# if __cpp_lib_function_ref != 202306L
+# error "__cpp_lib_function_ref should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_function_ref
+# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_gcd_lcm
# error "__cpp_lib_gcd_lcm should be defined in c++26"
# endif
@@ -5673,6 +6043,19 @@
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should be defined in c++26"
+# endif
+# if __cpp_lib_hazard_pointer != 202306L
+# error "__cpp_lib_hazard_pointer should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_hazard_pointer
+# error "__cpp_lib_hazard_pointer should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_hypot
# error "__cpp_lib_hypot should be defined in c++26"
# endif
@@ -6146,6 +6529,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ratio
+# error "__cpp_lib_ratio should be defined in c++26"
+# endif
+# if __cpp_lib_ratio != 202306L
+# error "__cpp_lib_ratio should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ratio
+# error "__cpp_lib_ratio should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_raw_memory_algorithms
# error "__cpp_lib_raw_memory_algorithms should be defined in c++26"
# endif
@@ -6153,6 +6549,19 @@
# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_rcu
+# error "__cpp_lib_rcu should be defined in c++26"
+# endif
+# if __cpp_lib_rcu != 202306L
+# error "__cpp_lib_rcu should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_rcu
+# error "__cpp_lib_rcu should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should be defined in c++26"
@@ -6274,6 +6683,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26"
+# endif
+# if __cpp_lib_smart_ptr_owner_equality != 202306L
+# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_smart_ptr_owner_equality
+# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++26"
@@ -6314,6 +6736,19 @@
# error "__cpp_lib_ssize should have the value 201902L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should be defined in c++26"
+# endif
+# if __cpp_lib_sstream_from_string_view != 202306L
+# error "__cpp_lib_sstream_from_string_view should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_sstream_from_string_view
+# error "__cpp_lib_sstream_from_string_view should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_stacktrace
# error "__cpp_lib_stacktrace should be defined in c++26"
@@ -6369,6 +6804,19 @@
# error "__cpp_lib_string_view should have the value 201803L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should be defined in c++26"
+# endif
+# if __cpp_lib_submdspan != 202306L
+# error "__cpp_lib_submdspan should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_submdspan
+# error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_syncbuf
# error "__cpp_lib_syncbuf should be defined in c++26"
@@ -6382,6 +6830,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should be defined in c++26"
+# endif
+# if __cpp_lib_text_encoding != 202306L
+# error "__cpp_lib_text_encoding should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_text_encoding
+# error "__cpp_lib_text_encoding should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++26"
@@ -6422,6 +6883,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_to_string
+# error "__cpp_lib_to_string should be defined in c++26"
+# endif
+# if __cpp_lib_to_string != 202306L
+# error "__cpp_lib_to_string should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should be defined in c++26"
# endif
@@ -6513,5 +6987,18 @@
# error "__cpp_lib_void_t should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should be defined in c++26"
+# endif
+# if __cpp_lib_within_lifetime != 202306L
+# error "__cpp_lib_within_lifetime should have the value 202306L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_within_lifetime
+# error "__cpp_lib_within_lifetime should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#endif // TEST_STD_VER > 23
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 19738d80e6f18..72ae5bdd653a8 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -87,7 +87,11 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_allocate_at_least",
- "values": {"c++23": 202106},
+ "values": {
+ "c++23": 202106,
+ # Note LWG3887 Version macro for allocate_at_least
+ #"c++26": 202302, # P2652R2 Disallow User Specialization of allocator_traits
+ },
"headers": ["memory"],
},
{
@@ -133,6 +137,12 @@ def add_version_header(tc):
"headers": ["map", "set", "unordered_map", "unordered_set"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_associative_heterogeneous_insertion",
+ "values": {"c++26": 202306}, # P2363R5 Extending associative containers with the remaining heterogeneous overloads
+ "headers": ["map", "set", "unordered_map", "unordered_set"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_assume_aligned",
"values": {"c++20": 201811},
@@ -192,13 +202,19 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_bind_back",
- "values": {"c++23": 202202},
+ "values": {
+ "c++23": 202202,
+ "c++26": 202306, # P2714R1 Bind front and back to NTTP callables
+ },
"headers": ["functional"],
"unimplemented": True,
},
{
"name": "__cpp_lib_bind_front",
- "values": {"c++20": 201907},
+ "values": {
+ "c++20": 201907,
+ "c++26": 202306, # P2714R1 Bind front and back to NTTP callables
+ },
"headers": ["functional"],
},
{
@@ -212,6 +228,12 @@ def add_version_header(tc):
"headers": ["bit"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_bitset",
+ "values": {"c++26": 202306}, # P2697R1 Interfacing bitset with string_view
+ "headers": ["bitset"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_bool_constant",
"values": {"c++17": 201505},
@@ -255,7 +277,10 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_chrono",
- "values": {"c++17": 201611},
+ "values": {
+ "c++17": 201611,
+ #"c++26": 202306, # P2592R3 Hashing support for std::chrono value classes
+ },
"headers": ["chrono"],
},
{
@@ -280,7 +305,10 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_constexpr_algorithms",
- "values": {"c++20": 201806},
+ "values": {
+ "c++20": 201806,
+ #"c++26": 202306, # P2562R1 constexpr Stable Sorting
+ },
"headers": ["algorithm", "utility"],
},
{
@@ -359,6 +387,12 @@ def add_version_header(tc):
"values": {"c++20": 201907},
"headers": ["vector"],
},
+ {
+ "name": "__cpp_lib_copyable_function",
+ "values": {"c++26": 202306}, # P2548R6 copyable_function
+ "headers": ["functional"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_coroutine",
"values": {"c++20": 201902},
@@ -428,6 +462,10 @@ def add_version_header(tc):
"c++20": 202106,
# "c++23": 202207, Not implemented P2419R2 Clarify handling of encodings in localized formatting of chrono types
},
+ # Note these three papers are adopted at the June 2023 meeting and have sequential numbering
+ # 202304 P2510R3 Formatting pointers
+ # 202305 P2757R3 Type-checking format args
+ # 202306 P2637R3 Member Visit
"headers": ["format"],
"unimplemented": True,
},
@@ -447,6 +485,18 @@ def add_version_header(tc):
"values": {"c++23": 202207},
"headers": ["utility"],
},
+ {
+ "name": "__cpp_lib_fstream_native_handle",
+ "values": {"c++26": 202306}, # P1759R6 Native handles and file streams
+ "headers": ["fstream"],
+ "unimplemented": True,
+ },
+ {
+ "name": "__cpp_lib_function_ref",
+ "values": {"c++26": 202306}, # P0792R14 function_ref: a type-erased callable reference
+ "headers": ["functional"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_gcd_lcm",
"values": {"c++17": 201606},
@@ -474,6 +524,12 @@ def add_version_header(tc):
"values": {"c++17": 201606},
"headers": ["type_traits"],
},
+ {
+ "name": "__cpp_lib_hazard_pointer",
+ "values": {"c++26": 202306}, # P2530R3 Hazard Pointers for C++26
+ "headers": ["hazard_pointer"],# TODO verify this entry since the paper was underspecified.
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_hypot",
"values": {"c++17": 201603},
@@ -679,7 +735,10 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_not_fn",
- "values": {"c++17": 201603},
+ "values": {
+ "c++17": 201603,
+ #"c++26": 202306, # P2714R1 Bind front and back to NTTP callables
+ },
"headers": ["functional"],
},
{
@@ -785,11 +844,23 @@ def add_version_header(tc):
"headers": ["ranges", "tuple", "utility"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_ratio",
+ "values": {"c++26": 202306}, # P2734R0 Adding the new SI prefixes
+ "headers": ["ratio"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_raw_memory_algorithms",
"values": {"c++17": 201606},
"headers": ["memory"],
},
+ {
+ "name": "__cpp_lib_rcu",
+ "values": {"c++26": 202306}, # P2545R4 Read-Copy Update (RCU)
+ "headers": ["rcu"], # TODO verify this entry since the paper was underspecified.
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_reference_from_temporary",
"values": {"c++23": 202202},
@@ -863,6 +934,12 @@ def add_version_header(tc):
"headers": ["memory"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_smart_ptr_owner_equality",
+ "values": {"c++26": 202306}, # P1901R2 Enabling the Use of weak_ptr as Keys in Unordered Associative Containers
+ "headers": ["memory"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_source_location",
"values": {"c++20": 201907},
@@ -886,6 +963,12 @@ def add_version_header(tc):
"values": {"c++20": 201902},
"headers": ["iterator"],
},
+ {
+ "name": "__cpp_lib_sstream_from_string_view",
+ "values": {"c++26": 202306}, # P2495R3 Interfacing stringstreams with string_view
+ "headers": ["sstream"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_stacktrace",
"values": {"c++23": 202011},
@@ -922,12 +1005,24 @@ def add_version_header(tc):
"values": {"c++17": 201606, "c++20": 201803},
"headers": ["string", "string_view"],
},
+ {
+ "name": "__cpp_lib_submdspan",
+ "values": {"c++26": 202306}, # P2630R4 submdspan
+ "headers": ["mdspan"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_syncbuf",
"values": {"c++20": 201803},
"headers": ["syncstream"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_text_encoding",
+ "values": {"c++26": 202306}, # P1885R12 Naming Text Encodings to Demystify Them
+ "headers": ["text_encoding"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_three_way_comparison",
"values": {"c++20": 201907},
@@ -946,10 +1041,19 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_to_chars",
- "values": {"c++17": 201611},
+ "values": {
+ "c++17": 201611,
+ #"c++26: 202306, # P2497R0 Testing for success or failure of <charconv> functions
+ },
"headers": ["charconv"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_to_string",
+ "values": {"c++23": 202306}, # P2587R3 to_string or not to_string
+ "headers": ["string"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_to_underlying",
"values": {"c++23": 202102},
@@ -1015,6 +1119,12 @@ def add_version_header(tc):
"values": {"c++17": 201411},
"headers": ["type_traits"],
},
+ {
+ "name": "__cpp_lib_within_lifetime",
+ "values": {"c++26": 202306}, # P2641R4 Checking if a union alternative is active
+ "headers": ["type_traits"],
+ "unimplemented": True,
+ },
]
]
@@ -1048,6 +1158,7 @@ def add_version_header(tc):
lit_markup = {
"barrier": ["UNSUPPORTED: no-threads"],
"filesystem": ["UNSUPPORTED: no-filesystem"],
+ "fstream": ["UNSUPPORTED: no-localization"],
"iomanip": ["UNSUPPORTED: no-localization"],
"ios": ["UNSUPPORTED: no-localization"],
"iostream": ["UNSUPPORTED: no-localization"],
@@ -1059,6 +1170,7 @@ def add_version_header(tc):
"regex": ["UNSUPPORTED: no-localization"],
"semaphore": ["UNSUPPORTED: no-threads"],
"shared_mutex": ["UNSUPPORTED: no-threads"],
+ "sstream": ["UNSUPPORTED: no-localization"],
"stdatomic.h": ["UNSUPPORTED: no-threads"],
"stop_token": ["UNSUPPORTED: no-threads"],
"thread": ["UNSUPPORTED: no-threads"],
More information about the libcxx-commits
mailing list