[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
This commit is contained in:
Mark de Wever 2023-06-17 12:00:23 +02:00
parent 72e598957c
commit 3f05d044f4
25 changed files with 1982 additions and 577 deletions

View File

@ -21,359 +21,391 @@ Status
:name: feature-status-table :name: feature-status-table
:widths: auto :widths: auto
================================================= ================= =================================================== =================
Macro Name Value Macro Name Value
================================================= ================= =================================================== =================
**C++ 14** **C++ 14**
------------------------------------------------------------------- ---------------------------------------------------------------------
``__cpp_lib_chrono_udls`` ``201304L`` ``__cpp_lib_chrono_udls`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_complex_udls`` ``201309L`` ``__cpp_lib_complex_udls`` ``201309L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_exchange_function`` ``201304L`` ``__cpp_lib_exchange_function`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_generic_associative_lookup`` ``201304L`` ``__cpp_lib_generic_associative_lookup`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_integer_sequence`` ``201304L`` ``__cpp_lib_integer_sequence`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_integral_constant_callable`` ``201304L`` ``__cpp_lib_integral_constant_callable`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_final`` ``201402L`` ``__cpp_lib_is_final`` ``201402L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_null_pointer`` ``201309L`` ``__cpp_lib_is_null_pointer`` ``201309L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_make_reverse_iterator`` ``201402L`` ``__cpp_lib_make_reverse_iterator`` ``201402L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_make_unique`` ``201304L`` ``__cpp_lib_make_unique`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_null_iterators`` ``201304L`` ``__cpp_lib_null_iterators`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_quoted_string_io`` ``201304L`` ``__cpp_lib_quoted_string_io`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_result_of_sfinae`` ``201210L`` ``__cpp_lib_result_of_sfinae`` ``201210L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L`` ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shared_timed_mutex`` ``201402L`` ``__cpp_lib_shared_timed_mutex`` ``201402L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_string_udls`` ``201304L`` ``__cpp_lib_string_udls`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_transformation_trait_aliases`` ``201304L`` ``__cpp_lib_transformation_trait_aliases`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_transparent_operators`` ``201210L`` ``__cpp_lib_transparent_operators`` ``201210L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_tuple_element_t`` ``201402L`` ``__cpp_lib_tuple_element_t`` ``201402L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_tuples_by_type`` ``201304L`` ``__cpp_lib_tuples_by_type`` ``201304L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
**C++ 17** **C++ 17**
------------------------------------------------------------------- ---------------------------------------------------------------------
``__cpp_lib_addressof_constexpr`` ``201603L`` ``__cpp_lib_addressof_constexpr`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_allocator_traits_is_always_equal`` ``201411L`` ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_any`` ``201606L`` ``__cpp_lib_any`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_apply`` ``201603L`` ``__cpp_lib_apply`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_array_constexpr`` ``201603L`` ``__cpp_lib_array_constexpr`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_as_const`` ``201510L`` ``__cpp_lib_as_const`` ``201510L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_is_always_lock_free`` ``201603L`` ``__cpp_lib_atomic_is_always_lock_free`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bool_constant`` ``201505L`` ``__cpp_lib_bool_constant`` ``201505L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_boyer_moore_searcher`` ``201603L`` ``__cpp_lib_boyer_moore_searcher`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_byte`` ``201603L`` ``__cpp_lib_byte`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_chrono`` ``201611L`` ``__cpp_lib_chrono`` ``201611L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_clamp`` ``201603L`` ``__cpp_lib_clamp`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_enable_shared_from_this`` ``201603L`` ``__cpp_lib_enable_shared_from_this`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_execution`` *unimplemented* ``__cpp_lib_execution`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_filesystem`` ``201703L`` ``__cpp_lib_filesystem`` ``201703L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_gcd_lcm`` ``201606L`` ``__cpp_lib_gcd_lcm`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_hardware_interference_size`` ``201703L`` ``__cpp_lib_hardware_interference_size`` ``201703L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_has_unique_object_representations`` ``201606L`` ``__cpp_lib_has_unique_object_representations`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_hypot`` ``201603L`` ``__cpp_lib_hypot`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_incomplete_container_elements`` ``201505L`` ``__cpp_lib_incomplete_container_elements`` ``201505L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_invoke`` ``201411L`` ``__cpp_lib_invoke`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_aggregate`` ``201703L`` ``__cpp_lib_is_aggregate`` ``201703L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_invocable`` ``201703L`` ``__cpp_lib_is_invocable`` ``201703L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_swappable`` ``201603L`` ``__cpp_lib_is_swappable`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_launder`` ``201606L`` ``__cpp_lib_launder`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_logical_traits`` ``201510L`` ``__cpp_lib_logical_traits`` ``201510L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_make_from_tuple`` ``201606L`` ``__cpp_lib_make_from_tuple`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_map_try_emplace`` ``201411L`` ``__cpp_lib_map_try_emplace`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_math_special_functions`` *unimplemented* ``__cpp_lib_math_special_functions`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_memory_resource`` ``201603L`` ``__cpp_lib_memory_resource`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_node_extract`` ``201606L`` ``__cpp_lib_node_extract`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_nonmember_container_access`` ``201411L`` ``__cpp_lib_nonmember_container_access`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_not_fn`` ``201603L`` ``__cpp_lib_not_fn`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_optional`` ``201606L`` ``__cpp_lib_optional`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_parallel_algorithm`` *unimplemented* ``__cpp_lib_parallel_algorithm`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_raw_memory_algorithms`` ``201606L`` ``__cpp_lib_raw_memory_algorithms`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_sample`` ``201603L`` ``__cpp_lib_sample`` ``201603L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_scoped_lock`` ``201703L`` ``__cpp_lib_scoped_lock`` ``201703L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shared_mutex`` ``201505L`` ``__cpp_lib_shared_mutex`` ``201505L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shared_ptr_arrays`` ``201611L`` ``__cpp_lib_shared_ptr_arrays`` ``201611L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shared_ptr_weak_type`` ``201606L`` ``__cpp_lib_shared_ptr_weak_type`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_string_view`` ``201606L`` ``__cpp_lib_string_view`` ``201606L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_to_chars`` *unimplemented* ``__cpp_lib_to_chars`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_transparent_operators`` ``201510L`` ``__cpp_lib_transparent_operators`` ``201510L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_type_trait_variable_templates`` ``201510L`` ``__cpp_lib_type_trait_variable_templates`` ``201510L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_uncaught_exceptions`` ``201411L`` ``__cpp_lib_uncaught_exceptions`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_unordered_map_try_emplace`` ``201411L`` ``__cpp_lib_unordered_map_try_emplace`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_variant`` ``202102L`` ``__cpp_lib_variant`` ``202102L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_void_t`` ``201411L`` ``__cpp_lib_void_t`` ``201411L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
**C++ 20** **C++ 20**
------------------------------------------------------------------- ---------------------------------------------------------------------
``__cpp_lib_array_constexpr`` ``201811L`` ``__cpp_lib_array_constexpr`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_assume_aligned`` ``201811L`` ``__cpp_lib_assume_aligned`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_flag_test`` ``201907L`` ``__cpp_lib_atomic_flag_test`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_float`` *unimplemented* ``__cpp_lib_atomic_float`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_ref`` *unimplemented* ``__cpp_lib_atomic_ref`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_shared_ptr`` *unimplemented* ``__cpp_lib_atomic_shared_ptr`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_value_initialization`` ``201911L`` ``__cpp_lib_atomic_value_initialization`` ``201911L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_atomic_wait`` ``201907L`` ``__cpp_lib_atomic_wait`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_barrier`` ``201907L`` ``__cpp_lib_barrier`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bind_front`` ``201907L`` ``__cpp_lib_bind_front`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bit_cast`` ``201806L`` ``__cpp_lib_bit_cast`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bitops`` *unimplemented* ``__cpp_lib_bitops`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bounded_array_traits`` ``201902L`` ``__cpp_lib_bounded_array_traits`` ``201902L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_char8_t`` ``201907L`` ``__cpp_lib_char8_t`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_concepts`` ``202002L`` ``__cpp_lib_concepts`` ``202002L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_algorithms`` ``201806L`` ``__cpp_lib_constexpr_algorithms`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_complex`` ``201711L`` ``__cpp_lib_constexpr_complex`` ``201711L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_dynamic_alloc`` ``201907L`` ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_functional`` ``201907L`` ``__cpp_lib_constexpr_functional`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_iterator`` ``201811L`` ``__cpp_lib_constexpr_iterator`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_memory`` ``201811L`` ``__cpp_lib_constexpr_memory`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_numeric`` ``201911L`` ``__cpp_lib_constexpr_numeric`` ``201911L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_string`` ``201907L`` ``__cpp_lib_constexpr_string`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_string_view`` ``201811L`` ``__cpp_lib_constexpr_string_view`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_tuple`` ``201811L`` ``__cpp_lib_constexpr_tuple`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_utility`` ``201811L`` ``__cpp_lib_constexpr_utility`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_vector`` ``201907L`` ``__cpp_lib_constexpr_vector`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_coroutine`` ``201902L`` ``__cpp_lib_coroutine`` ``201902L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_destroying_delete`` ``201806L`` ``__cpp_lib_destroying_delete`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_endian`` ``201907L`` ``__cpp_lib_endian`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_erase_if`` ``202002L`` ``__cpp_lib_erase_if`` ``202002L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_execution`` *unimplemented* ``__cpp_lib_execution`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_format`` *unimplemented* ``__cpp_lib_format`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_generic_unordered_lookup`` ``201811L`` ``__cpp_lib_generic_unordered_lookup`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_int_pow2`` ``202002L`` ``__cpp_lib_int_pow2`` ``202002L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_integer_comparison_functions`` ``202002L`` ``__cpp_lib_integer_comparison_functions`` ``202002L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_interpolate`` ``201902L`` ``__cpp_lib_interpolate`` ``201902L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_constant_evaluated`` ``201811L`` ``__cpp_lib_is_constant_evaluated`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_layout_compatible`` *unimplemented* ``__cpp_lib_is_layout_compatible`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_nothrow_convertible`` ``201806L`` ``__cpp_lib_is_nothrow_convertible`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_pointer_interconvertible`` *unimplemented* ``__cpp_lib_is_pointer_interconvertible`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_jthread`` *unimplemented* ``__cpp_lib_jthread`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_latch`` ``201907L`` ``__cpp_lib_latch`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_list_remove_return_type`` ``201806L`` ``__cpp_lib_list_remove_return_type`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_math_constants`` ``201907L`` ``__cpp_lib_math_constants`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_move_iterator_concept`` ``202207L`` ``__cpp_lib_move_iterator_concept`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_polymorphic_allocator`` ``201902L`` ``__cpp_lib_polymorphic_allocator`` ``201902L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges`` ``202106L`` ``__cpp_lib_ranges`` ``202106L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_remove_cvref`` ``201711L`` ``__cpp_lib_remove_cvref`` ``201711L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_semaphore`` ``201907L`` ``__cpp_lib_semaphore`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shared_ptr_arrays`` ``201707L`` ``__cpp_lib_shared_ptr_arrays`` ``201707L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_shift`` ``201806L`` ``__cpp_lib_shift`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented* ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_source_location`` ``201907L`` ``__cpp_lib_source_location`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_span`` ``202002L`` ``__cpp_lib_span`` ``202002L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ssize`` ``201902L`` ``__cpp_lib_ssize`` ``201902L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_starts_ends_with`` ``201711L`` ``__cpp_lib_starts_ends_with`` ``201711L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_string_view`` ``201803L`` ``__cpp_lib_string_view`` ``201803L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_syncbuf`` *unimplemented* ``__cpp_lib_syncbuf`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_three_way_comparison`` *unimplemented* ``__cpp_lib_three_way_comparison`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_to_address`` ``201711L`` ``__cpp_lib_to_address`` ``201711L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_to_array`` ``201907L`` ``__cpp_lib_to_array`` ``201907L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_type_identity`` ``201806L`` ``__cpp_lib_type_identity`` ``201806L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_unwrap_ref`` ``201811L`` ``__cpp_lib_unwrap_ref`` ``201811L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
**C++ 23** **C++ 23**
------------------------------------------------------------------- ---------------------------------------------------------------------
``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L`` ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_allocate_at_least`` ``202106L`` ``__cpp_lib_allocate_at_least`` ``202106L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented* ``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_bind_back`` *unimplemented* ``__cpp_lib_bind_back`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_byteswap`` ``202110L`` ``__cpp_lib_byteswap`` ``202110L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_bitset`` ``202207L`` ``__cpp_lib_constexpr_bitset`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_charconv`` ``202207L`` ``__cpp_lib_constexpr_charconv`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_cmath`` *unimplemented* ``__cpp_lib_constexpr_cmath`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_memory`` ``202202L`` ``__cpp_lib_constexpr_memory`` ``202202L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_constexpr_typeinfo`` ``202106L`` ``__cpp_lib_constexpr_typeinfo`` ``202106L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_expected`` ``202211L`` ``__cpp_lib_expected`` ``202211L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_format_ranges`` ``202207L`` ``__cpp_lib_format_ranges`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_formatters`` *unimplemented* ``__cpp_lib_formatters`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_forward_like`` ``202207L`` ``__cpp_lib_forward_like`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_invoke_r`` ``202106L`` ``__cpp_lib_invoke_r`` ``202106L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_is_scoped_enum`` ``202011L`` ``__cpp_lib_is_scoped_enum`` ``202011L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_mdspan`` *unimplemented* ``__cpp_lib_mdspan`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_move_only_function`` *unimplemented* ``__cpp_lib_move_only_function`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_optional`` ``202110L`` ``__cpp_lib_optional`` ``202110L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_out_ptr`` *unimplemented* ``__cpp_lib_out_ptr`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_as_rvalue`` ``202207L`` ``__cpp_lib_ranges_as_rvalue`` ``202207L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_chunk`` *unimplemented* ``__cpp_lib_ranges_chunk`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_chunk_by`` *unimplemented* ``__cpp_lib_ranges_chunk_by`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_iota`` *unimplemented* ``__cpp_lib_ranges_iota`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_join_with`` *unimplemented* ``__cpp_lib_ranges_join_with`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_slide`` *unimplemented* ``__cpp_lib_ranges_slide`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_starts_ends_with`` *unimplemented* ``__cpp_lib_ranges_starts_ends_with`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_to_container`` *unimplemented* ``__cpp_lib_ranges_to_container`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_ranges_zip`` *unimplemented* ``__cpp_lib_ranges_zip`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_reference_from_temporary`` *unimplemented* ``__cpp_lib_reference_from_temporary`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_spanstream`` *unimplemented* ``__cpp_lib_spanstream`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_stacktrace`` *unimplemented* ``__cpp_lib_stacktrace`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_stdatomic_h`` ``202011L`` ``__cpp_lib_stdatomic_h`` ``202011L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_string_contains`` ``202011L`` ``__cpp_lib_string_contains`` ``202011L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_string_resize_and_overwrite`` ``202110L`` ``__cpp_lib_string_resize_and_overwrite`` ``202110L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_to_underlying`` ``202102L`` ``__cpp_lib_to_string`` *unimplemented*
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_unreachable`` ``202202L`` ``__cpp_lib_to_underlying`` ``202102L``
------------------------------------------------- ----------------- --------------------------------------------------- -----------------
``__cpp_lib_unreachable`` ``202202L``
--------------------------------------------------- -----------------
**C++ 26** **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*
=================================================== =================

View File

@ -1,5 +1,22 @@
"Issue #","Issue Name","Meeting","Status","First released version","Labels" "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","" "`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|"
"","","","","","" "","","","","",""

1 Issue # Issue Name Meeting Status First released version Labels
2 `2994 <https://wg21.link/LWG2994>`__ Needless UB for ``basic_string`` and ``basic_string_view`` Varna June 2023
3 `3884 <https://wg21.link/LWG3884>`__ ``flat_foo`` is missing allocator-extended copy/move constructors Varna June 2023 |flat_containers|
4 `3885 <https://wg21.link/LWG3885>`__ ``op`` should be in [zombie.names] Varna June 2023
5 `3887 <https://wg21.link/LWG3887>`__ Version macro for ``allocate_at_least`` Varna June 2023
6 `3893 <https://wg21.link/LWG3893>`__ LWG 3661 broke ``atomic<shared_ptr<T>> a; a = nullptr;`` Varna June 2023
7 `3894 <https://wg21.link/LWG3894>`__ ``generator::promise_type::yield_value(ranges::elements_of<Rng, Alloc>)`` should not be ``noexcept`` Varna June 2023
8 `3903 <https://wg21.link/LWG3903>`__ span destructor is redundantly noexcept Varna June 2023
9 `3904 <https://wg21.link/LWG3904>`__ ``lazy_split_view::outer-iterator``'s const-converting constructor isn't setting ``trailing_empty_`` Varna June 2023 |ranges|
10 `3905 <https://wg21.link/LWG3905>`__ Type of ``std::fexcept_t`` Varna June 2023
11 `3912 <https://wg21.link/LWG3912>`__ ``enumerate_view::iterator::operator-`` should be ``noexcept`` Varna June 2023 |ranges|
12 `3914 <https://wg21.link/LWG3914>`__ Inconsistent template-head of ``ranges::enumerate_view`` Varna June 2023 |ranges|
13 `3915 <https://wg21.link/LWG3915>`__ Redundant paragraph about expression variations Varna June 2023 |ranges|
14 `3925 <https://wg21.link/LWG3925>`__ Concept ``formattable``'s definition is incorrect Varna June 2023 |In Progress| |format|
15 `3927 <https://wg21.link/LWG3927>`__ Unclear preconditions for ``operator[]`` for sequence containers Varna June 2023
16 `3935 <https://wg21.link/LWG3935>`__ ``template<class X> constexpr complex& operator=(const complex<X>&)`` has no specification Varna June 2023
17 `3938 <https://wg21.link/LWG3938>`__ Cannot use ``std::expected`` monadic ops with move-only ``error_type`` Varna June 2023
18 `3940 <https://wg21.link/LWG3940>`__ ``std::expected<void, E>::value()`` also needs ``E`` to be copy constructible Varna June 2023
19
20 `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
21 `3892 <https://wg21.link/LWG3892>`__ Incorrect formatting of nested ranges and tuples Not Yet Adopted |Complete| 17.0 |format|
22

View File

@ -1,2 +1,29 @@
"Paper #","Group","Paper Name","Meeting","Status","First released version","Labels" "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","","",""
"","","","","","","" "","","","","","",""

1 Paper # Group Paper Name Meeting Status First released version Labels
2 `P2497R0 <https://wg21.link/P2497R0>`__ LWG Testing for success or failure of ``<charconv>`` functions Varna June 2023
3 `P2592R3 <https://wg21.link/P2592R3>`__ LWG Hashing support for ``std::chrono`` value classes Varna June 2023
4 `P2587R3 <https://wg21.link/P2587R3>`__ LWG ``to_string`` or not ``to_string`` Varna June 2023 |format|
5 `P2562R1 <https://wg21.link/P2562R1>`__ LWG ``constexpr`` Stable Sorting Varna June 2023
6 `P2545R4 <https://wg21.link/P2545R4>`__ LWG Read-Copy Update (RCU) Varna June 2023
7 `P2530R3 <https://wg21.link/P2530R3>`__ LWG Hazard Pointers for C++26 Varna June 2023
8 `P2538R1 <https://wg21.link/P2538R1>`__ LWG ADL-proof ``std::projected`` Varna June 2023 |ranges|
9 `P2495R3 <https://wg21.link/P2495R3>`__ LWG Interfacing ``stringstreams`` with ``string_view`` Varna June 2023
10 `P2510R3 <https://wg21.link/P2510R3>`__ LWG Formatting pointers Varna June 2023 |In Progress| |format|
11 `P2198R7 <https://wg21.link/P2198R7>`__ LWG Freestanding Feature-Test Macros and Implementation-Defined Extensions Varna June 2023
12 `P2338R4 <https://wg21.link/P2338R4>`__ LWG Freestanding Library: Character primitives and the C library Varna June 2023
13 `P2013R5 <https://wg21.link/P2013R5>`__ LWG Freestanding Language: Optional ``::operator new`` Varna June 2023
14 `P2363R5 <https://wg21.link/P2363R5>`__ LWG Extending associative containers with the remaining heterogeneous overloads Varna June 2023
15 `P1901R2 <https://wg21.link/P1901R2>`__ LWG Enabling the Use of ``weak_ptr`` as Keys in Unordered Associative Containers Varna June 2023
16 `P1885R12 <https://wg21.link/P1885R12>`__ LWG Naming Text Encodings to Demystify Them Varna June 2023
17 `P0792R14 <https://wg21.link/P0792R14>`__ LWG ``function_ref``: a type-erased callable reference Varna June 2023
18 `P2874R2 <https://wg21.link/P2874R2>`__ LWG Mandating Annex D Require No More Varna June 2023
19 `P2757R3 <https://wg21.link/P2757R3>`__ LWG Type-checking format args Varna June 2023 |format|
20 `P2637R3 <https://wg21.link/P2637R3>`__ LWG Member ``visit`` Varna June 2023 |format|
21 `P2641R4 <https://wg21.link/P2641R4>`__ CWG, LWG Checking if a ``union`` alternative is active Varna June 2023
22 `P1759R6 <https://wg21.link/P1759R6>`__ LWG Native handles and file streams Varna June 2023
23 `P2697R1 <https://wg21.link/P2697R1>`__ LWG Interfacing ``bitset`` with ``string_view`` Varna June 2023
24 `P1383R2 <https://wg21.link/P1383R2>`__ LWG More ``constexpr`` for ``<cmath>`` and ``<complex>`` Varna June 2023
25 `P2734R0 <https://wg21.link/P2734R0>`__ LWG Adding the new SI prefixes Varna June 2023
26 `P2548R6 <https://wg21.link/P2548R6>`__ LWG ``copyable_function`` Varna June 2023
27 `P2714R1 <https://wg21.link/P2714R1>`__ LWG Bind front and back to NTTP callables Varna June 2023
28 `P2630R4 <https://wg21.link/P2630R4>`__ LWG ``submdspan`` Varna June 2023
29

View File

@ -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 "`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 "`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|" "`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|, `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|, `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", "`P2419R2 <https://wg21.link/P2419R2>`__","Clarify handling of encodings in localized formatting of chrono types","C++23",

Can't render this file because it has a wrong number of fields in line 12.

View File

@ -28,6 +28,8 @@ __cpp_lib_array_constexpr 201811L <array> <iterato
__cpp_lib_as_const 201510L <utility> __cpp_lib_as_const 201510L <utility>
__cpp_lib_associative_heterogeneous_erasure 202110L <map> <set> <unordered_map> __cpp_lib_associative_heterogeneous_erasure 202110L <map> <set> <unordered_map>
<unordered_set> <unordered_set>
__cpp_lib_associative_heterogeneous_insertion 202306L <map> <set> <unordered_map>
<unordered_set>
__cpp_lib_assume_aligned 201811L <memory> __cpp_lib_assume_aligned 201811L <memory>
__cpp_lib_atomic_flag_test 201907L <atomic> __cpp_lib_atomic_flag_test 201907L <atomic>
__cpp_lib_atomic_float 201711L <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_value_initialization 201911L <atomic> <memory>
__cpp_lib_atomic_wait 201907L <atomic> __cpp_lib_atomic_wait 201907L <atomic>
__cpp_lib_barrier 201907L <barrier> __cpp_lib_barrier 201907L <barrier>
__cpp_lib_bind_back 202202L <functional> __cpp_lib_bind_back 202306L <functional>
__cpp_lib_bind_front 201907L <functional> 202202L // C++23
__cpp_lib_bind_front 202306L <functional>
201907L // C++20
__cpp_lib_bit_cast 201806L <bit> __cpp_lib_bit_cast 201806L <bit>
__cpp_lib_bitops 201907L <bit> __cpp_lib_bitops 201907L <bit>
__cpp_lib_bitset 202306L <bitset>
__cpp_lib_bool_constant 201505L <type_traits> __cpp_lib_bool_constant 201505L <type_traits>
__cpp_lib_bounded_array_traits 201902L <type_traits> __cpp_lib_bounded_array_traits 201902L <type_traits>
__cpp_lib_boyer_moore_searcher 201603L <functional> __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_typeinfo 202106L <typeinfo>
__cpp_lib_constexpr_utility 201811L <utility> __cpp_lib_constexpr_utility 201811L <utility>
__cpp_lib_constexpr_vector 201907L <vector> __cpp_lib_constexpr_vector 201907L <vector>
__cpp_lib_copyable_function 202306L <functional>
__cpp_lib_coroutine 201902L <coroutine> __cpp_lib_coroutine 201902L <coroutine>
__cpp_lib_destroying_delete 201806L <new> __cpp_lib_destroying_delete 201806L <new>
__cpp_lib_enable_shared_from_this 201603L <memory> __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_format_ranges 202207L <format>
__cpp_lib_formatters 202302L <stacktrace> <thread> __cpp_lib_formatters 202302L <stacktrace> <thread>
__cpp_lib_forward_like 202207L <utility> __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_gcd_lcm 201606L <numeric>
__cpp_lib_generic_associative_lookup 201304L <map> <set> __cpp_lib_generic_associative_lookup 201304L <map> <set>
__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set> __cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set>
__cpp_lib_hardware_interference_size 201703L <new> __cpp_lib_hardware_interference_size 201703L <new>
__cpp_lib_has_unique_object_representations 201606L <type_traits> __cpp_lib_has_unique_object_representations 201606L <type_traits>
__cpp_lib_hazard_pointer 202306L <hazard_pointer>
__cpp_lib_hypot 201603L <cmath> __cpp_lib_hypot 201603L <cmath>
__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector> __cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector>
__cpp_lib_int_pow2 202002L <bit> __cpp_lib_int_pow2 202002L <bit>
@ -155,7 +164,9 @@ __cpp_lib_ranges_to_container 202202L <deque> <forward
<set> <stack> <string> <set> <stack> <string>
<unordered_map> <unordered_set> <vector> <unordered_map> <unordered_set> <vector>
__cpp_lib_ranges_zip 202110L <ranges> <tuple> <utility> __cpp_lib_ranges_zip 202110L <ranges> <tuple> <utility>
__cpp_lib_ratio 202306L <ratio>
__cpp_lib_raw_memory_algorithms 201606L <memory> __cpp_lib_raw_memory_algorithms 201606L <memory>
__cpp_lib_rcu 202306L <rcu>
__cpp_lib_reference_from_temporary 202202L <type_traits> __cpp_lib_reference_from_temporary 202202L <type_traits>
__cpp_lib_remove_cvref 201711L <type_traits> __cpp_lib_remove_cvref 201711L <type_traits>
__cpp_lib_result_of_sfinae 201210L <functional> <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_shared_timed_mutex 201402L <shared_mutex>
__cpp_lib_shift 201806L <algorithm> __cpp_lib_shift 201806L <algorithm>
__cpp_lib_smart_ptr_for_overwrite 202002L <memory> __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_source_location 201907L <source_location>
__cpp_lib_span 202002L <span> __cpp_lib_span 202002L <span>
__cpp_lib_spanstream 202106L <spanstream> __cpp_lib_spanstream 202106L <spanstream>
__cpp_lib_ssize 201902L <iterator> __cpp_lib_ssize 201902L <iterator>
__cpp_lib_sstream_from_string_view 202306L <sstream>
__cpp_lib_stacktrace 202011L <stacktrace> __cpp_lib_stacktrace 202011L <stacktrace>
__cpp_lib_starts_ends_with 201711L <string> <string_view> __cpp_lib_starts_ends_with 201711L <string> <string_view>
__cpp_lib_stdatomic_h 202011L <stdatomic.h> __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_udls 201304L <string>
__cpp_lib_string_view 201803L <string> <string_view> __cpp_lib_string_view 201803L <string> <string_view>
201606L // C++17 201606L // C++17
__cpp_lib_submdspan 202306L <mdspan>
__cpp_lib_syncbuf 201803L <syncstream> __cpp_lib_syncbuf 201803L <syncstream>
__cpp_lib_text_encoding 202306L <text_encoding>
__cpp_lib_three_way_comparison 201907L <compare> __cpp_lib_three_way_comparison 201907L <compare>
__cpp_lib_to_address 201711L <memory> __cpp_lib_to_address 201711L <memory>
__cpp_lib_to_array 201907L <array> __cpp_lib_to_array 201907L <array>
__cpp_lib_to_chars 201611L <charconv> __cpp_lib_to_chars 201611L <charconv>
__cpp_lib_to_string 202306L <string>
__cpp_lib_to_underlying 202102L <utility> __cpp_lib_to_underlying 202102L <utility>
__cpp_lib_transformation_trait_aliases 201304L <type_traits> __cpp_lib_transformation_trait_aliases 201304L <type_traits>
__cpp_lib_transparent_operators 201510L <functional> <memory> __cpp_lib_transparent_operators 201510L <functional> <memory>
@ -201,6 +217,7 @@ __cpp_lib_unreachable 202202L <utility>
__cpp_lib_unwrap_ref 201811L <functional> __cpp_lib_unwrap_ref 201811L <functional>
__cpp_lib_variant 202102L <variant> __cpp_lib_variant 202102L <variant>
__cpp_lib_void_t 201411L <type_traits> __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_stdatomic_h 202011L
# define __cpp_lib_string_contains 202011L # define __cpp_lib_string_contains 202011L
# define __cpp_lib_string_resize_and_overwrite 202110L # define __cpp_lib_string_resize_and_overwrite 202110L
// # define __cpp_lib_to_string 202306L
# define __cpp_lib_to_underlying 202102L # define __cpp_lib_to_underlying 202102L
# define __cpp_lib_unreachable 202202L # define __cpp_lib_unreachable 202202L
#endif #endif
#if _LIBCPP_STD_VER >= 26 #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 #endif
// clang-format on // clang-format on

View File

@ -56,6 +56,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/functional.cppm std/functional.cppm
std/future.cppm std/future.cppm
std/generator.cppm std/generator.cppm
std/hazard_pointer.cppm
std/initializer_list.cppm std/initializer_list.cppm
std/iomanip.cppm std/iomanip.cppm
std/ios.cppm std/ios.cppm
@ -83,6 +84,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/random.cppm std/random.cppm
std/ranges.cppm std/ranges.cppm
std/ratio.cppm std/ratio.cppm
std/rcu.cppm
std/regex.cppm std/regex.cppm
std/scoped_allocator.cppm std/scoped_allocator.cppm
std/semaphore.cppm std/semaphore.cppm
@ -104,6 +106,7 @@ set(LIBCXX_SOURCES_MODULE_STD
std/strstream.cppm std/strstream.cppm
std/syncstream.cppm std/syncstream.cppm
std/system_error.cppm std/system_error.cppm
std/text_encoding.cppm
std/thread.cppm std/thread.cppm
std/tuple.cppm std/tuple.cppm
std/type_traits.cppm std/type_traits.cppm

View File

@ -61,6 +61,7 @@ export import :fstream;
export import :functional; export import :functional;
export import :future; export import :future;
export import :generator; export import :generator;
export import :hazard_pointer;
export import :initializer_list; export import :initializer_list;
export import :iomanip; export import :iomanip;
export import :ios; export import :ios;
@ -86,6 +87,7 @@ export import :queue;
export import :random; export import :random;
export import :ranges; export import :ranges;
export import :ratio; export import :ratio;
export import :rcu;
export import :regex; export import :regex;
export import :scoped_allocator; export import :scoped_allocator;
export import :semaphore; export import :semaphore;
@ -106,6 +108,7 @@ export import :string_view;
export import :strstream; export import :strstream;
export import :syncstream; export import :syncstream;
export import :system_error; export import :system_error;
export import :text_encoding;
export import :thread; export import :thread;
export import :tuple; export import :tuple;
export import :type_traits; export import :type_traits;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -16,6 +16,7 @@
// Test the feature test macros defined by <bitset> // Test the feature test macros defined by <bitset>
/* Constant Value /* Constant Value
__cpp_lib_bitset 202306L [C++26]
__cpp_lib_constexpr_bitset 202207L [C++23] __cpp_lib_constexpr_bitset 202207L [C++23]
*/ */
@ -24,30 +25,50 @@
#if TEST_STD_VER < 14 #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 # ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23" # error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif # endif
#elif TEST_STD_VER == 14 #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 # ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23" # error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif # endif
#elif TEST_STD_VER == 17 #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 # ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23" # error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif # endif
#elif TEST_STD_VER == 20 #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 # ifdef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should not be defined before c++23" # error "__cpp_lib_constexpr_bitset should not be defined before c++23"
# endif # endif
#elif TEST_STD_VER == 23 #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 # ifndef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should be defined in c++23" # error "__cpp_lib_constexpr_bitset should be defined in c++23"
# endif # endif
@ -57,6 +78,19 @@
#elif TEST_STD_VER > 23 #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 # ifndef __cpp_lib_constexpr_bitset
# error "__cpp_lib_constexpr_bitset should be defined in c++26" # error "__cpp_lib_constexpr_bitset should be defined in c++26"
# endif # endif

View File

@ -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

View File

@ -17,9 +17,13 @@
/* Constant Value /* Constant Value
__cpp_lib_bind_back 202202L [C++23] __cpp_lib_bind_back 202202L [C++23]
202306L [C++26]
__cpp_lib_bind_front 201907L [C++20] __cpp_lib_bind_front 201907L [C++20]
202306L [C++26]
__cpp_lib_boyer_moore_searcher 201603L [C++17] __cpp_lib_boyer_moore_searcher 201603L [C++17]
__cpp_lib_constexpr_functional 201907L [C++20] __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 201411L [C++17]
__cpp_lib_invoke_r 202106L [C++23] __cpp_lib_invoke_r 202106L [C++23]
__cpp_lib_move_only_function 202110L [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" # error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif # 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 # ifdef __cpp_lib_invoke
# error "__cpp_lib_invoke should not be defined before c++17" # error "__cpp_lib_invoke should not be defined before c++17"
# endif # endif
@ -102,6 +114,14 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20" # error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif # 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 # ifdef __cpp_lib_invoke
# error "__cpp_lib_invoke should not be defined before c++17" # error "__cpp_lib_invoke should not be defined before c++17"
# endif # endif
@ -161,6 +181,14 @@
# error "__cpp_lib_constexpr_functional should not be defined before c++20" # error "__cpp_lib_constexpr_functional should not be defined before c++20"
# endif # 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 # ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++17" # error "__cpp_lib_invoke should be defined in c++17"
# endif # endif
@ -232,6 +260,14 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++20" # error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
# endif # 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 # ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++20" # error "__cpp_lib_invoke should be defined in c++20"
# endif # endif
@ -318,6 +354,14 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++23" # error "__cpp_lib_constexpr_functional should have the value 201907L in c++23"
# endif # 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 # ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++23" # error "__cpp_lib_invoke should be defined in c++23"
# endif # endif
@ -386,8 +430,8 @@
# ifndef __cpp_lib_bind_back # ifndef __cpp_lib_bind_back
# error "__cpp_lib_bind_back should be defined in c++26" # error "__cpp_lib_bind_back should be defined in c++26"
# endif # endif
# if __cpp_lib_bind_back != 202202L # if __cpp_lib_bind_back != 202306L
# error "__cpp_lib_bind_back should have the value 202202L in c++26" # error "__cpp_lib_bind_back should have the value 202306L in c++26"
# endif # endif
# else // _LIBCPP_VERSION # else // _LIBCPP_VERSION
# ifdef __cpp_lib_bind_back # ifdef __cpp_lib_bind_back
@ -398,8 +442,8 @@
# ifndef __cpp_lib_bind_front # ifndef __cpp_lib_bind_front
# error "__cpp_lib_bind_front should be defined in c++26" # error "__cpp_lib_bind_front should be defined in c++26"
# endif # endif
# if __cpp_lib_bind_front != 201907L # if __cpp_lib_bind_front != 202306L
# error "__cpp_lib_bind_front should have the value 201907L in c++26" # error "__cpp_lib_bind_front should have the value 202306L in c++26"
# endif # endif
# ifndef __cpp_lib_boyer_moore_searcher # ifndef __cpp_lib_boyer_moore_searcher
@ -416,6 +460,32 @@
# error "__cpp_lib_constexpr_functional should have the value 201907L in c++26" # error "__cpp_lib_constexpr_functional should have the value 201907L in c++26"
# endif # 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 # ifndef __cpp_lib_invoke
# error "__cpp_lib_invoke should be defined in c++26" # error "__cpp_lib_invoke should be defined in c++26"
# endif # endif

View File

@ -15,15 +15,16 @@
// Test the feature test macros defined by <map> // Test the feature test macros defined by <map>
/* Constant Value /* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17] __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23] __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20] __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
__cpp_lib_generic_associative_lookup 201304L [C++14] __cpp_lib_erase_if 202002L [C++20]
__cpp_lib_map_try_emplace 201411L [C++17] __cpp_lib_generic_associative_lookup 201304L [C++14]
__cpp_lib_node_extract 201606L [C++17] __cpp_lib_map_try_emplace 201411L [C++17]
__cpp_lib_nonmember_container_access 201411L [C++17] __cpp_lib_node_extract 201606L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23] __cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23]
*/ */
#include <map> #include <map>
@ -39,6 +40,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -73,6 +78,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -113,6 +122,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -162,6 +175,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20" # error "__cpp_lib_erase_if should be defined in c++20"
# endif # endif
@ -223,6 +240,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23" # error "__cpp_lib_erase_if should be defined in c++23"
# endif # endif
@ -293,6 +314,19 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26" # error "__cpp_lib_erase_if should be defined in c++26"
# endif # endif

View File

@ -15,8 +15,9 @@
// Test the feature test macros defined by <mdspan> // Test the feature test macros defined by <mdspan>
/* Constant Value /* Constant Value
__cpp_lib_mdspan 202207L [C++23] __cpp_lib_mdspan 202207L [C++23]
__cpp_lib_submdspan 202306L [C++26]
*/ */
#include <mdspan> #include <mdspan>
@ -28,24 +29,40 @@
# error "__cpp_lib_mdspan should not be defined before c++23" # error "__cpp_lib_mdspan should not be defined before c++23"
# endif # endif
# ifdef __cpp_lib_submdspan
# error "__cpp_lib_submdspan should not be defined before c++26"
# endif
#elif TEST_STD_VER == 14 #elif TEST_STD_VER == 14
# ifdef __cpp_lib_mdspan # ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23" # error "__cpp_lib_mdspan should not be defined before c++23"
# endif # endif
# ifdef __cpp_lib_submdspan
# error "__cpp_lib_submdspan should not be defined before c++26"
# endif
#elif TEST_STD_VER == 17 #elif TEST_STD_VER == 17
# ifdef __cpp_lib_mdspan # ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23" # error "__cpp_lib_mdspan should not be defined before c++23"
# endif # endif
# ifdef __cpp_lib_submdspan
# error "__cpp_lib_submdspan should not be defined before c++26"
# endif
#elif TEST_STD_VER == 20 #elif TEST_STD_VER == 20
# ifdef __cpp_lib_mdspan # ifdef __cpp_lib_mdspan
# error "__cpp_lib_mdspan should not be defined before c++23" # error "__cpp_lib_mdspan should not be defined before c++23"
# endif # endif
# ifdef __cpp_lib_submdspan
# error "__cpp_lib_submdspan should not be defined before c++26"
# endif
#elif TEST_STD_VER == 23 #elif TEST_STD_VER == 23
# if !defined(_LIBCPP_VERSION) # if !defined(_LIBCPP_VERSION)
@ -61,6 +78,10 @@
# endif # endif
# endif # endif
# ifdef __cpp_lib_submdspan
# error "__cpp_lib_submdspan should not be defined before c++26"
# endif
#elif TEST_STD_VER > 23 #elif TEST_STD_VER > 23
# if !defined(_LIBCPP_VERSION) # if !defined(_LIBCPP_VERSION)
@ -76,5 +97,18 @@
# endif # endif
# 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 #endif // TEST_STD_VER > 23

View File

@ -33,6 +33,7 @@
201707L [C++20] 201707L [C++20]
__cpp_lib_shared_ptr_weak_type 201606L [C++17] __cpp_lib_shared_ptr_weak_type 201606L [C++17]
__cpp_lib_smart_ptr_for_overwrite 202002L [C++20] __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_to_address 201711L [C++20]
__cpp_lib_transparent_operators 201210L [C++14] __cpp_lib_transparent_operators 201210L [C++14]
201510L [C++17] 201510L [C++17]
@ -103,6 +104,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif # 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 # ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20" # error "__cpp_lib_to_address should not be defined before c++20"
# endif # endif
@ -176,6 +181,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif # 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 # ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20" # error "__cpp_lib_to_address should not be defined before c++20"
# endif # endif
@ -270,6 +279,10 @@
# error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
# endif # 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 # ifdef __cpp_lib_to_address
# error "__cpp_lib_to_address should not be defined before c++20" # error "__cpp_lib_to_address should not be defined before c++20"
# endif # endif
@ -388,6 +401,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++20" # error "__cpp_lib_to_address should be defined in c++20"
# endif # endif
@ -521,6 +538,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++23" # error "__cpp_lib_to_address should be defined in c++23"
# endif # endif
@ -654,6 +675,19 @@
# endif # endif
# 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 # ifndef __cpp_lib_to_address
# error "__cpp_lib_to_address should be defined in c++26" # error "__cpp_lib_to_address should be defined in c++26"
# endif # endif

View File

@ -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

View File

@ -15,14 +15,15 @@
// Test the feature test macros defined by <set> // Test the feature test macros defined by <set>
/* Constant Value /* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17] __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23] __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20] __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
__cpp_lib_generic_associative_lookup 201304L [C++14] __cpp_lib_erase_if 202002L [C++20]
__cpp_lib_node_extract 201606L [C++17] __cpp_lib_generic_associative_lookup 201304L [C++14]
__cpp_lib_nonmember_container_access 201411L [C++17] __cpp_lib_node_extract 201606L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23] __cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23]
*/ */
#include <set> #include <set>
@ -38,6 +39,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -68,6 +73,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -104,6 +113,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -146,6 +159,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20" # error "__cpp_lib_erase_if should be defined in c++20"
# endif # endif
@ -200,6 +217,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23" # error "__cpp_lib_erase_if should be defined in c++23"
# endif # endif
@ -263,6 +284,19 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26" # error "__cpp_lib_erase_if should be defined in c++26"
# endif # endif

View File

@ -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

View File

@ -28,6 +28,7 @@
__cpp_lib_string_udls 201304L [C++14] __cpp_lib_string_udls 201304L [C++14]
__cpp_lib_string_view 201606L [C++17] __cpp_lib_string_view 201606L [C++17]
201803L [C++20] 201803L [C++20]
__cpp_lib_to_string 202306L [C++23]
*/ */
#include <string> #include <string>
@ -79,6 +80,10 @@
# error "__cpp_lib_string_view should not be defined before c++17" # error "__cpp_lib_string_view should not be defined before c++17"
# endif # endif
# ifdef __cpp_lib_to_string
# error "__cpp_lib_to_string should not be defined before c++23"
# endif
#elif TEST_STD_VER == 14 #elif TEST_STD_VER == 14
# ifdef __cpp_lib_allocator_traits_is_always_equal # ifdef __cpp_lib_allocator_traits_is_always_equal
@ -128,6 +133,10 @@
# error "__cpp_lib_string_view should not be defined before c++17" # error "__cpp_lib_string_view should not be defined before c++17"
# endif # endif
# ifdef __cpp_lib_to_string
# error "__cpp_lib_to_string should not be defined before c++23"
# endif
#elif TEST_STD_VER == 17 #elif TEST_STD_VER == 17
# ifndef __cpp_lib_allocator_traits_is_always_equal # 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" # error "__cpp_lib_string_view should have the value 201606L in c++17"
# endif # endif
# ifdef __cpp_lib_to_string
# error "__cpp_lib_to_string should not be defined before c++23"
# endif
#elif TEST_STD_VER == 20 #elif TEST_STD_VER == 20
# ifndef __cpp_lib_allocator_traits_is_always_equal # 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" # error "__cpp_lib_string_view should have the value 201803L in c++20"
# endif # endif
# ifdef __cpp_lib_to_string
# error "__cpp_lib_to_string should not be defined before c++23"
# endif
#elif TEST_STD_VER == 23 #elif TEST_STD_VER == 23
# ifndef __cpp_lib_allocator_traits_is_always_equal # 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" # error "__cpp_lib_string_view should have the value 201803L in c++23"
# 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
#elif TEST_STD_VER > 23 #elif TEST_STD_VER > 23
# ifndef __cpp_lib_allocator_traits_is_always_equal # 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" # error "__cpp_lib_string_view should have the value 201803L in c++26"
# 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
#endif // TEST_STD_VER > 23 #endif // TEST_STD_VER > 23

View File

@ -38,6 +38,7 @@
__cpp_lib_type_identity 201806L [C++20] __cpp_lib_type_identity 201806L [C++20]
__cpp_lib_type_trait_variable_templates 201510L [C++17] __cpp_lib_type_trait_variable_templates 201510L [C++17]
__cpp_lib_void_t 201411L [C++17] __cpp_lib_void_t 201411L [C++17]
__cpp_lib_within_lifetime 202306L [C++26]
*/ */
#include <type_traits> #include <type_traits>
@ -133,6 +134,10 @@
# error "__cpp_lib_void_t should not be defined before c++17" # error "__cpp_lib_void_t should not be defined before c++17"
# endif # endif
# ifdef __cpp_lib_within_lifetime
# error "__cpp_lib_within_lifetime should not be defined before c++26"
# endif
#elif TEST_STD_VER == 14 #elif TEST_STD_VER == 14
# ifdef __cpp_lib_bool_constant # ifdef __cpp_lib_bool_constant
@ -238,6 +243,10 @@
# error "__cpp_lib_void_t should not be defined before c++17" # error "__cpp_lib_void_t should not be defined before c++17"
# endif # endif
# ifdef __cpp_lib_within_lifetime
# error "__cpp_lib_within_lifetime should not be defined before c++26"
# endif
#elif TEST_STD_VER == 17 #elif TEST_STD_VER == 17
# ifndef __cpp_lib_bool_constant # ifndef __cpp_lib_bool_constant
@ -367,6 +376,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++17" # error "__cpp_lib_void_t should have the value 201411L in c++17"
# endif # endif
# ifdef __cpp_lib_within_lifetime
# error "__cpp_lib_within_lifetime should not be defined before c++26"
# endif
#elif TEST_STD_VER == 20 #elif TEST_STD_VER == 20
# ifndef __cpp_lib_bool_constant # ifndef __cpp_lib_bool_constant
@ -529,6 +542,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++20" # error "__cpp_lib_void_t should have the value 201411L in c++20"
# endif # endif
# ifdef __cpp_lib_within_lifetime
# error "__cpp_lib_within_lifetime should not be defined before c++26"
# endif
#elif TEST_STD_VER == 23 #elif TEST_STD_VER == 23
# ifndef __cpp_lib_bool_constant # ifndef __cpp_lib_bool_constant
@ -703,6 +720,10 @@
# error "__cpp_lib_void_t should have the value 201411L in c++23" # error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif # endif
# ifdef __cpp_lib_within_lifetime
# error "__cpp_lib_within_lifetime should not be defined before c++26"
# endif
#elif TEST_STD_VER > 23 #elif TEST_STD_VER > 23
# ifndef __cpp_lib_bool_constant # ifndef __cpp_lib_bool_constant
@ -877,5 +898,18 @@
# error "__cpp_lib_void_t should have the value 201411L in c++26" # error "__cpp_lib_void_t should have the value 201411L in c++26"
# endif # 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 #endif // TEST_STD_VER > 23

View File

@ -15,15 +15,16 @@
// Test the feature test macros defined by <unordered_map> // Test the feature test macros defined by <unordered_map>
/* Constant Value /* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17] __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23] __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20] __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
__cpp_lib_generic_unordered_lookup 201811L [C++20] __cpp_lib_erase_if 202002L [C++20]
__cpp_lib_node_extract 201606L [C++17] __cpp_lib_generic_unordered_lookup 201811L [C++20]
__cpp_lib_nonmember_container_access 201411L [C++17] __cpp_lib_node_extract 201606L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23] __cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_unordered_map_try_emplace 201411L [C++17] __cpp_lib_ranges_to_container 202202L [C++23]
__cpp_lib_unordered_map_try_emplace 201411L [C++17]
*/ */
#include <unordered_map> #include <unordered_map>
@ -39,6 +40,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -73,6 +78,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -110,6 +119,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -156,6 +169,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20" # error "__cpp_lib_erase_if should be defined in c++20"
# endif # endif
@ -217,6 +234,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23" # error "__cpp_lib_erase_if should be defined in c++23"
# endif # endif
@ -287,6 +308,19 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26" # error "__cpp_lib_erase_if should be defined in c++26"
# endif # endif

View File

@ -15,14 +15,15 @@
// Test the feature test macros defined by <unordered_set> // Test the feature test macros defined by <unordered_set>
/* Constant Value /* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17] __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23] __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20] __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
__cpp_lib_generic_unordered_lookup 201811L [C++20] __cpp_lib_erase_if 202002L [C++20]
__cpp_lib_node_extract 201606L [C++17] __cpp_lib_generic_unordered_lookup 201811L [C++20]
__cpp_lib_nonmember_container_access 201411L [C++17] __cpp_lib_node_extract 201606L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23] __cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++23]
*/ */
#include <unordered_set> #include <unordered_set>
@ -38,6 +39,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -68,6 +73,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -101,6 +110,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif # 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 # ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20" # error "__cpp_lib_erase_if should not be defined before c++20"
# endif # endif
@ -140,6 +153,10 @@
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20" # error "__cpp_lib_erase_if should be defined in c++20"
# endif # endif
@ -194,6 +211,10 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23" # error "__cpp_lib_erase_if should be defined in c++23"
# endif # endif
@ -257,6 +278,19 @@
# endif # endif
# 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 # ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26" # error "__cpp_lib_erase_if should be defined in c++26"
# endif # endif

View File

@ -87,7 +87,11 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_allocate_at_least", "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"], "headers": ["memory"],
}, },
{ {
@ -133,6 +137,12 @@ feature_test_macros = [
"headers": ["map", "set", "unordered_map", "unordered_set"], "headers": ["map", "set", "unordered_map", "unordered_set"],
"unimplemented": True, "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", "name": "__cpp_lib_assume_aligned",
"values": {"c++20": 201811}, "values": {"c++20": 201811},
@ -192,13 +202,19 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_bind_back", "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"], "headers": ["functional"],
"unimplemented": True, "unimplemented": True,
}, },
{ {
"name": "__cpp_lib_bind_front", "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"], "headers": ["functional"],
}, },
{ {
@ -212,6 +228,12 @@ feature_test_macros = [
"headers": ["bit"], "headers": ["bit"],
"unimplemented": True, "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", "name": "__cpp_lib_bool_constant",
"values": {"c++17": 201505}, "values": {"c++17": 201505},
@ -255,7 +277,10 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_chrono", "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"], "headers": ["chrono"],
}, },
{ {
@ -280,7 +305,10 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_constexpr_algorithms", "name": "__cpp_lib_constexpr_algorithms",
"values": {"c++20": 201806}, "values": {
"c++20": 201806,
#"c++26": 202306, # P2562R1 constexpr Stable Sorting
},
"headers": ["algorithm", "utility"], "headers": ["algorithm", "utility"],
}, },
{ {
@ -359,6 +387,12 @@ feature_test_macros = [
"values": {"c++20": 201907}, "values": {"c++20": 201907},
"headers": ["vector"], "headers": ["vector"],
}, },
{
"name": "__cpp_lib_copyable_function",
"values": {"c++26": 202306}, # P2548R6 copyable_function
"headers": ["functional"],
"unimplemented": True,
},
{ {
"name": "__cpp_lib_coroutine", "name": "__cpp_lib_coroutine",
"values": {"c++20": 201902}, "values": {"c++20": 201902},
@ -428,6 +462,10 @@ feature_test_macros = [
"c++20": 202106, "c++20": 202106,
# "c++23": 202207, Not implemented P2419R2 Clarify handling of encodings in localized formatting of chrono types # "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"], "headers": ["format"],
"unimplemented": True, "unimplemented": True,
}, },
@ -447,6 +485,18 @@ feature_test_macros = [
"values": {"c++23": 202207}, "values": {"c++23": 202207},
"headers": ["utility"], "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", "name": "__cpp_lib_gcd_lcm",
"values": {"c++17": 201606}, "values": {"c++17": 201606},
@ -474,6 +524,12 @@ feature_test_macros = [
"values": {"c++17": 201606}, "values": {"c++17": 201606},
"headers": ["type_traits"], "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", "name": "__cpp_lib_hypot",
"values": {"c++17": 201603}, "values": {"c++17": 201603},
@ -679,7 +735,10 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_not_fn", "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"], "headers": ["functional"],
}, },
{ {
@ -785,11 +844,23 @@ feature_test_macros = [
"headers": ["ranges", "tuple", "utility"], "headers": ["ranges", "tuple", "utility"],
"unimplemented": True, "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", "name": "__cpp_lib_raw_memory_algorithms",
"values": {"c++17": 201606}, "values": {"c++17": 201606},
"headers": ["memory"], "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", "name": "__cpp_lib_reference_from_temporary",
"values": {"c++23": 202202}, "values": {"c++23": 202202},
@ -863,6 +934,12 @@ feature_test_macros = [
"headers": ["memory"], "headers": ["memory"],
"unimplemented": True, "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", "name": "__cpp_lib_source_location",
"values": {"c++20": 201907}, "values": {"c++20": 201907},
@ -886,6 +963,12 @@ feature_test_macros = [
"values": {"c++20": 201902}, "values": {"c++20": 201902},
"headers": ["iterator"], "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", "name": "__cpp_lib_stacktrace",
"values": {"c++23": 202011}, "values": {"c++23": 202011},
@ -922,12 +1005,24 @@ feature_test_macros = [
"values": {"c++17": 201606, "c++20": 201803}, "values": {"c++17": 201606, "c++20": 201803},
"headers": ["string", "string_view"], "headers": ["string", "string_view"],
}, },
{
"name": "__cpp_lib_submdspan",
"values": {"c++26": 202306}, # P2630R4 submdspan
"headers": ["mdspan"],
"unimplemented": True,
},
{ {
"name": "__cpp_lib_syncbuf", "name": "__cpp_lib_syncbuf",
"values": {"c++20": 201803}, "values": {"c++20": 201803},
"headers": ["syncstream"], "headers": ["syncstream"],
"unimplemented": True, "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", "name": "__cpp_lib_three_way_comparison",
"values": {"c++20": 201907}, "values": {"c++20": 201907},
@ -946,10 +1041,19 @@ feature_test_macros = [
}, },
{ {
"name": "__cpp_lib_to_chars", "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"], "headers": ["charconv"],
"unimplemented": True, "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", "name": "__cpp_lib_to_underlying",
"values": {"c++23": 202102}, "values": {"c++23": 202102},
@ -1015,6 +1119,12 @@ feature_test_macros = [
"values": {"c++17": 201411}, "values": {"c++17": 201411},
"headers": ["type_traits"], "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 @@ assert all(
lit_markup = { lit_markup = {
"barrier": ["UNSUPPORTED: no-threads"], "barrier": ["UNSUPPORTED: no-threads"],
"filesystem": ["UNSUPPORTED: no-filesystem"], "filesystem": ["UNSUPPORTED: no-filesystem"],
"fstream": ["UNSUPPORTED: no-localization"],
"iomanip": ["UNSUPPORTED: no-localization"], "iomanip": ["UNSUPPORTED: no-localization"],
"ios": ["UNSUPPORTED: no-localization"], "ios": ["UNSUPPORTED: no-localization"],
"iostream": ["UNSUPPORTED: no-localization"], "iostream": ["UNSUPPORTED: no-localization"],
@ -1059,6 +1170,7 @@ lit_markup = {
"regex": ["UNSUPPORTED: no-localization"], "regex": ["UNSUPPORTED: no-localization"],
"semaphore": ["UNSUPPORTED: no-threads"], "semaphore": ["UNSUPPORTED: no-threads"],
"shared_mutex": ["UNSUPPORTED: no-threads"], "shared_mutex": ["UNSUPPORTED: no-threads"],
"sstream": ["UNSUPPORTED: no-localization"],
"stdatomic.h": ["UNSUPPORTED: no-threads"], "stdatomic.h": ["UNSUPPORTED: no-threads"],
"stop_token": ["UNSUPPORTED: no-threads"], "stop_token": ["UNSUPPORTED: no-threads"],
"thread": ["UNSUPPORTED: no-threads"], "thread": ["UNSUPPORTED: no-threads"],