diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -21,359 +21,391 @@ :name: feature-status-table :widths: auto - ================================================= ================= - Macro Name Value - ================================================= ================= + =================================================== ================= + Macro Name Value + =================================================== ================= **C++ 14** - ------------------------------------------------------------------- - ``__cpp_lib_chrono_udls`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_complex_udls`` ``201309L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_exchange_function`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_generic_associative_lookup`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_integer_sequence`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_integral_constant_callable`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_final`` ``201402L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_null_pointer`` ``201309L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_make_reverse_iterator`` ``201402L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_make_unique`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_null_iterators`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_quoted_string_io`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_result_of_sfinae`` ``201210L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shared_timed_mutex`` ``201402L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_string_udls`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_transformation_trait_aliases`` ``201304L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_transparent_operators`` ``201210L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_tuple_element_t`` ``201402L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_tuples_by_type`` ``201304L`` - ------------------------------------------------- ----------------- + --------------------------------------------------------------------- + ``__cpp_lib_chrono_udls`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_complex_udls`` ``201309L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_exchange_function`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_generic_associative_lookup`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_integer_sequence`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_integral_constant_callable`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_final`` ``201402L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_null_pointer`` ``201309L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_make_reverse_iterator`` ``201402L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_make_unique`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_null_iterators`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_quoted_string_io`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_result_of_sfinae`` ``201210L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shared_timed_mutex`` ``201402L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_string_udls`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_transformation_trait_aliases`` ``201304L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_transparent_operators`` ``201210L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_tuple_element_t`` ``201402L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_tuples_by_type`` ``201304L`` + --------------------------------------------------- ----------------- **C++ 17** - ------------------------------------------------------------------- - ``__cpp_lib_addressof_constexpr`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_any`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_apply`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_array_constexpr`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_as_const`` ``201510L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_is_always_lock_free`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_bool_constant`` ``201505L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_boyer_moore_searcher`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_byte`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_chrono`` ``201611L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_clamp`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_enable_shared_from_this`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_execution`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_filesystem`` ``201703L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_gcd_lcm`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_hardware_interference_size`` ``201703L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_has_unique_object_representations`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_hypot`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_incomplete_container_elements`` ``201505L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_invoke`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_aggregate`` ``201703L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_invocable`` ``201703L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_swappable`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_launder`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_logical_traits`` ``201510L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_make_from_tuple`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_map_try_emplace`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_math_special_functions`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_memory_resource`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_node_extract`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_nonmember_container_access`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_not_fn`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_optional`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_parallel_algorithm`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_raw_memory_algorithms`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_sample`` ``201603L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_scoped_lock`` ``201703L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shared_mutex`` ``201505L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shared_ptr_arrays`` ``201611L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shared_ptr_weak_type`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_string_view`` ``201606L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_to_chars`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_transparent_operators`` ``201510L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_type_trait_variable_templates`` ``201510L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_uncaught_exceptions`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_unordered_map_try_emplace`` ``201411L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_variant`` ``202102L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_void_t`` ``201411L`` - ------------------------------------------------- ----------------- + --------------------------------------------------------------------- + ``__cpp_lib_addressof_constexpr`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_any`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_apply`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_array_constexpr`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_as_const`` ``201510L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_is_always_lock_free`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_bool_constant`` ``201505L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_boyer_moore_searcher`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_byte`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_chrono`` ``201611L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_clamp`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_enable_shared_from_this`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_execution`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_filesystem`` ``201703L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_gcd_lcm`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_hardware_interference_size`` ``201703L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_has_unique_object_representations`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_hypot`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_incomplete_container_elements`` ``201505L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_invoke`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_aggregate`` ``201703L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_invocable`` ``201703L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_swappable`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_launder`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_logical_traits`` ``201510L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_make_from_tuple`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_map_try_emplace`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_math_special_functions`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_memory_resource`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_node_extract`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_nonmember_container_access`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_not_fn`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_optional`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_parallel_algorithm`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_raw_memory_algorithms`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_sample`` ``201603L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_scoped_lock`` ``201703L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shared_mutex`` ``201505L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shared_ptr_arrays`` ``201611L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shared_ptr_weak_type`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_string_view`` ``201606L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_to_chars`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_transparent_operators`` ``201510L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_type_trait_variable_templates`` ``201510L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_uncaught_exceptions`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_unordered_map_try_emplace`` ``201411L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_variant`` ``202102L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_void_t`` ``201411L`` + --------------------------------------------------- ----------------- **C++ 20** - ------------------------------------------------------------------- - ``__cpp_lib_array_constexpr`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_assume_aligned`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_flag_test`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_float`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_ref`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_shared_ptr`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_value_initialization`` ``201911L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_atomic_wait`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_barrier`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_bind_front`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_bit_cast`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_bitops`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_bounded_array_traits`` ``201902L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_char8_t`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_concepts`` ``202002L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_algorithms`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_complex`` ``201711L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_functional`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_iterator`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_memory`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_numeric`` ``201911L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_string`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_string_view`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_tuple`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_utility`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_vector`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_coroutine`` ``201902L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_destroying_delete`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_endian`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_erase_if`` ``202002L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_execution`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_format`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_generic_unordered_lookup`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_int_pow2`` ``202002L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_integer_comparison_functions`` ``202002L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_interpolate`` ``201902L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_constant_evaluated`` ``201811L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_layout_compatible`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_is_nothrow_convertible`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_pointer_interconvertible`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_jthread`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_latch`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_list_remove_return_type`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_math_constants`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_move_iterator_concept`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_polymorphic_allocator`` ``201902L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges`` ``202106L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_remove_cvref`` ``201711L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_semaphore`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shared_ptr_arrays`` ``201707L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_shift`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_source_location`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_span`` ``202002L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_ssize`` ``201902L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_starts_ends_with`` ``201711L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_string_view`` ``201803L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_syncbuf`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_three_way_comparison`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_to_address`` ``201711L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_to_array`` ``201907L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_type_identity`` ``201806L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_unwrap_ref`` ``201811L`` - ------------------------------------------------- ----------------- + --------------------------------------------------------------------- + ``__cpp_lib_array_constexpr`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_assume_aligned`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_flag_test`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_float`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_ref`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_shared_ptr`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_value_initialization`` ``201911L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_atomic_wait`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_barrier`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_bind_front`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_bit_cast`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_bitops`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_bounded_array_traits`` ``201902L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_char8_t`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_concepts`` ``202002L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_algorithms`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_complex`` ``201711L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_functional`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_iterator`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_memory`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_numeric`` ``201911L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_string`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_string_view`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_tuple`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_utility`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_vector`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_coroutine`` ``201902L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_destroying_delete`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_endian`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_erase_if`` ``202002L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_execution`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_format`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_generic_unordered_lookup`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_int_pow2`` ``202002L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_integer_comparison_functions`` ``202002L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_interpolate`` ``201902L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_constant_evaluated`` ``201811L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_layout_compatible`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_is_nothrow_convertible`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_pointer_interconvertible`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_jthread`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_latch`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_list_remove_return_type`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_math_constants`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_move_iterator_concept`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_polymorphic_allocator`` ``201902L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges`` ``202106L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_remove_cvref`` ``201711L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_semaphore`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shared_ptr_arrays`` ``201707L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_shift`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_source_location`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_span`` ``202002L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_ssize`` ``201902L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_starts_ends_with`` ``201711L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_string_view`` ``201803L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_syncbuf`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_three_way_comparison`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_to_address`` ``201711L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_to_array`` ``201907L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_type_identity`` ``201806L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_unwrap_ref`` ``201811L`` + --------------------------------------------------- ----------------- **C++ 23** - ------------------------------------------------------------------- - ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_allocate_at_least`` ``202106L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_bind_back`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_byteswap`` ``202110L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_bitset`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_charconv`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_cmath`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_memory`` ``202202L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_constexpr_typeinfo`` ``202106L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_expected`` ``202211L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_format_ranges`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_formatters`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_forward_like`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_invoke_r`` ``202106L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_is_scoped_enum`` ``202011L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_mdspan`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_move_only_function`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_optional`` ``202110L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_out_ptr`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_as_rvalue`` ``202207L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_chunk`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_chunk_by`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_iota`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_join_with`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_slide`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_starts_ends_with`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_to_container`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_ranges_zip`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_reference_from_temporary`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_spanstream`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_stacktrace`` *unimplemented* - ------------------------------------------------- ----------------- - ``__cpp_lib_stdatomic_h`` ``202011L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_string_contains`` ``202011L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_string_resize_and_overwrite`` ``202110L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_to_underlying`` ``202102L`` - ------------------------------------------------- ----------------- - ``__cpp_lib_unreachable`` ``202202L`` - ------------------------------------------------- ----------------- + --------------------------------------------------------------------- + ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_allocate_at_least`` ``202106L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_bind_back`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_byteswap`` ``202110L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_bitset`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_charconv`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_cmath`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_memory`` ``202202L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_constexpr_typeinfo`` ``202106L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_expected`` ``202211L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_format_ranges`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_formatters`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_forward_like`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_invoke_r`` ``202106L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_is_scoped_enum`` ``202011L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_mdspan`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_move_only_function`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_optional`` ``202110L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_out_ptr`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_as_rvalue`` ``202207L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_chunk`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_chunk_by`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_iota`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_join_with`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_slide`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_starts_ends_with`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_to_container`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ranges_zip`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_reference_from_temporary`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_spanstream`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_stacktrace`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_stdatomic_h`` ``202011L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_string_contains`` ``202011L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_string_resize_and_overwrite`` ``202110L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_to_string`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_to_underlying`` ``202102L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_unreachable`` ``202202L`` + --------------------------------------------------- ----------------- **C++ 26** - =================================================================== + --------------------------------------------------------------------- + ``__cpp_lib_associative_heterogeneous_insertion`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_bind_back`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_bind_front`` ``202306L`` + --------------------------------------------------- ----------------- + ``__cpp_lib_bitset`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_copyable_function`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_fstream_native_handle`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_function_ref`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_hazard_pointer`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_ratio`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_rcu`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_smart_ptr_owner_equality`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_sstream_from_string_view`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_submdspan`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_text_encoding`` *unimplemented* + --------------------------------------------------- ----------------- + ``__cpp_lib_within_lifetime`` *unimplemented* + =================================================== ================= diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv --- a/libcxx/docs/Status/Cxx2cIssues.csv +++ b/libcxx/docs/Status/Cxx2cIssues.csv @@ -1,5 +1,22 @@ "Issue #","Issue Name","Meeting","Status","First released version","Labels" +"`2994 `__","Needless UB for ``basic_string`` and ``basic_string_view``","Varna June 2023","","","" +"`3884 `__","``flat_foo`` is missing allocator-extended copy/move constructors","Varna June 2023","","","|flat_containers|" +"`3885 `__","``op`` should be in [zombie.names]","Varna June 2023","","","" +"`3887 `__","Version macro for ``allocate_at_least``","Varna June 2023","","","" +"`3893 `__","LWG 3661 broke ``atomic> a; a = nullptr;``","Varna June 2023","","","" +"`3894 `__","``generator::promise_type::yield_value(ranges::elements_of)`` should not be ``noexcept``","Varna June 2023","","","" +"`3903 `__","span destructor is redundantly noexcept","Varna June 2023","","","" +"`3904 `__","``lazy_split_view::outer-iterator``'s const-converting constructor isn't setting ``trailing_empty_``","Varna June 2023","","","|ranges|" +"`3905 `__","Type of ``std::fexcept_t``","Varna June 2023","","","" +"`3912 `__","``enumerate_view::iterator::operator-`` should be ``noexcept``","Varna June 2023","","","|ranges|" +"`3914 `__","Inconsistent template-head of ``ranges::enumerate_view``","Varna June 2023","","","|ranges|" +"`3915 `__","Redundant paragraph about expression variations","Varna June 2023","","","|ranges|" +"`3925 `__","Concept ``formattable``'s definition is incorrect","Varna June 2023","|In Progress|","","|format|" +"`3927 `__","Unclear preconditions for ``operator[]`` for sequence containers","Varna June 2023","","","" +"`3935 `__","``template constexpr complex& operator=(const complex&)`` has no specification","Varna June 2023","","","" +"`3938 `__","Cannot use ``std::expected`` monadic ops with move-only ``error_type``","Varna June 2023","","","" +"`3940 `__","``std::expected::value()`` also needs ``E`` to be copy constructible","Varna June 2023","","","" "","","","","","" "`3343 `__","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 `__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0","" +"`3892 `__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0","|format|" "","","","","","" diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv --- a/libcxx/docs/Status/Cxx2cPapers.csv +++ b/libcxx/docs/Status/Cxx2cPapers.csv @@ -1,2 +1,29 @@ "Paper #","Group","Paper Name","Meeting","Status","First released version","Labels" +"`P2497R0 `__","LWG","Testing for success or failure of ```` functions","Varna June 2023","","","" +"`P2592R3 `__","LWG","Hashing support for ``std::chrono`` value classes","Varna June 2023","","","" +"`P2587R3 `__","LWG","``to_string`` or not ``to_string``","Varna June 2023","","","|format|" +"`P2562R1 `__","LWG","``constexpr`` Stable Sorting","Varna June 2023","","","" +"`P2545R4 `__","LWG","Read-Copy Update (RCU)","Varna June 2023","","","" +"`P2530R3 `__","LWG","Hazard Pointers for C++26","Varna June 2023","","","" +"`P2538R1 `__","LWG","ADL-proof ``std::projected``","Varna June 2023","","","|ranges|" +"`P2495R3 `__","LWG","Interfacing ``stringstreams`` with ``string_view``","Varna June 2023","","","" +"`P2510R3 `__","LWG","Formatting pointers","Varna June 2023","|In Progress|","","|format|" +"`P2198R7 `__","LWG","Freestanding Feature-Test Macros and Implementation-Defined Extensions","Varna June 2023","","","" +"`P2338R4 `__","LWG","Freestanding Library: Character primitives and the C library","Varna June 2023","","","" +"`P2013R5 `__","LWG","Freestanding Language: Optional ``::operator new``","Varna June 2023","","","" +"`P2363R5 `__","LWG","Extending associative containers with the remaining heterogeneous overloads","Varna June 2023","","","" +"`P1901R2 `__","LWG","Enabling the Use of ``weak_ptr`` as Keys in Unordered Associative Containers","Varna June 2023","","","" +"`P1885R12 `__","LWG","Naming Text Encodings to Demystify Them","Varna June 2023","","","" +"`P0792R14 `__","LWG","``function_ref``: a type-erased callable reference","Varna June 2023","","","" +"`P2874R2 `__","LWG","Mandating Annex D Require No More","Varna June 2023","","","" +"`P2757R3 `__","LWG","Type-checking format args","Varna June 2023","","","|format|" +"`P2637R3 `__","LWG","Member ``visit``","Varna June 2023","","","|format|" +"`P2641R4 `__","CWG, LWG","Checking if a ``union`` alternative is active","Varna June 2023","","","" +"`P1759R6 `__","LWG","Native handles and file streams","Varna June 2023","","","" +"`P2697R1 `__","LWG","Interfacing ``bitset`` with ``string_view``","Varna June 2023","","","" +"`P1383R2 `__","LWG","More ``constexpr`` for ```` and ````","Varna June 2023","","","" +"`P2734R0 `__","LWG","Adding the new SI prefixes","Varna June 2023","","","" +"`P2548R6 `__","LWG","``copyable_function``","Varna June 2023","","","" +"`P2714R1 `__","LWG","Bind front and back to NTTP callables","Varna June 2023","","","" +"`P2630R4 `__","LWG","``submdspan``","Varna June 2023","","","" "","","","","","","" diff --git a/libcxx/docs/Status/FormatIssues.csv b/libcxx/docs/Status/FormatIssues.csv --- a/libcxx/docs/Status/FormatIssues.csv +++ b/libcxx/docs/Status/FormatIssues.csv @@ -14,6 +14,9 @@ "`P2675R1 `__","``format``'s width estimation is too approximate and not forward compatible","C++23","Mark de Wever","|Complete|", Clang 17 "`P2572R1 `__","``std::format`` fill character allowances","C++23","Mark de Wever","|Complete|", Clang 17 "`P2693R1 `__","Formatting ``thread::id`` and ``stacktrace``","C++23","Mark de Wever","|In progress|" +"`P2510R3 `__","Formatting pointers","C++26","Mark de Wever","|In Progress|", +"`P2757R3 `__","Type-checking format args","C++26","","", +"`P2637R3 `__","Member ``visit``","C++26","","", `P1361 `_,"Integration of chrono with text formatting","C++20",Mark de Wever,|In Progress|, `P2372 `__,"Fixing locale handling in chrono formatters","C++20",Mark de Wever,|In Progress|, "`P2419R2 `__","Clarify handling of encodings in localized formatting of chrono types","C++23", diff --git a/libcxx/include/version b/libcxx/include/version --- a/libcxx/include/version +++ b/libcxx/include/version @@ -28,6 +28,8 @@ __cpp_lib_as_const 201510L __cpp_lib_associative_heterogeneous_erasure 202110L +__cpp_lib_associative_heterogeneous_insertion 202306L + __cpp_lib_assume_aligned 201811L __cpp_lib_atomic_flag_test 201907L __cpp_lib_atomic_float 201711L @@ -38,10 +40,13 @@ __cpp_lib_atomic_value_initialization 201911L __cpp_lib_atomic_wait 201907L __cpp_lib_barrier 201907L -__cpp_lib_bind_back 202202L -__cpp_lib_bind_front 201907L +__cpp_lib_bind_back 202306L + 202202L // C++23 +__cpp_lib_bind_front 202306L + 201907L // C++20 __cpp_lib_bit_cast 201806L __cpp_lib_bitops 201907L +__cpp_lib_bitset 202306L __cpp_lib_bool_constant 201505L __cpp_lib_bounded_array_traits 201902L __cpp_lib_boyer_moore_searcher 201603L @@ -72,6 +77,7 @@ __cpp_lib_constexpr_typeinfo 202106L __cpp_lib_constexpr_utility 201811L __cpp_lib_constexpr_vector 201907L +__cpp_lib_copyable_function 202306L __cpp_lib_coroutine 201902L __cpp_lib_destroying_delete 201806L __cpp_lib_enable_shared_from_this 201603L @@ -88,11 +94,14 @@ __cpp_lib_format_ranges 202207L __cpp_lib_formatters 202302L __cpp_lib_forward_like 202207L +__cpp_lib_fstream_native_handle 202306L +__cpp_lib_function_ref 202606L __cpp_lib_gcd_lcm 201606L __cpp_lib_generic_associative_lookup 201304L __cpp_lib_generic_unordered_lookup 201811L __cpp_lib_hardware_interference_size 201703L __cpp_lib_has_unique_object_representations 201606L +__cpp_lib_hazard_pointer 202306L __cpp_lib_hypot 201603L __cpp_lib_incomplete_container_elements 201505L __cpp_lib_int_pow2 202002L @@ -155,7 +164,9 @@ __cpp_lib_ranges_zip 202110L +__cpp_lib_ratio 202306L __cpp_lib_raw_memory_algorithms 201606L +__cpp_lib_rcu 202306L __cpp_lib_reference_from_temporary 202202L __cpp_lib_remove_cvref 201711L __cpp_lib_result_of_sfinae 201210L @@ -170,10 +181,12 @@ __cpp_lib_shared_timed_mutex 201402L __cpp_lib_shift 201806L __cpp_lib_smart_ptr_for_overwrite 202002L +__cpp_lib_smart_ptr_owner_equality 202306L __cpp_lib_source_location 201907L __cpp_lib_span 202002L __cpp_lib_spanstream 202106L __cpp_lib_ssize 201902L +__cpp_lib_sstream_from_string_view 202306L __cpp_lib_stacktrace 202011L __cpp_lib_starts_ends_with 201711L __cpp_lib_stdatomic_h 202011L @@ -182,11 +195,14 @@ __cpp_lib_string_udls 201304L __cpp_lib_string_view 201803L 201606L // C++17 +__cpp_lib_submdspan 202306L __cpp_lib_syncbuf 201803L +__cpp_lib_text_encoding 202306L __cpp_lib_three_way_comparison 201907L __cpp_lib_to_address 201711L __cpp_lib_to_array 201907L __cpp_lib_to_chars 201611L +__cpp_lib_to_string 202306L __cpp_lib_to_underlying 202102L __cpp_lib_transformation_trait_aliases 201304L __cpp_lib_transparent_operators 201510L @@ -201,6 +217,7 @@ __cpp_lib_unwrap_ref 201811L __cpp_lib_variant 202102L __cpp_lib_void_t 201411L +__cpp_lib_within_lifetime 202306L */ @@ -423,12 +440,29 @@ # define __cpp_lib_stdatomic_h 202011L # define __cpp_lib_string_contains 202011L # define __cpp_lib_string_resize_and_overwrite 202110L +// # define __cpp_lib_to_string 202306L # define __cpp_lib_to_underlying 202102L # define __cpp_lib_unreachable 202202L #endif #if _LIBCPP_STD_VER >= 26 - +// # define __cpp_lib_associative_heterogeneous_insertion 202306L +# undef __cpp_lib_bind_back +// # define __cpp_lib_bind_back 202306L +# undef __cpp_lib_bind_front +# define __cpp_lib_bind_front 202306L +// # define __cpp_lib_bitset 202306L +// # define __cpp_lib_copyable_function 202306L +// # define __cpp_lib_fstream_native_handle 202306L +// # define __cpp_lib_function_ref 202606L +// # define __cpp_lib_hazard_pointer 202306L +// # define __cpp_lib_ratio 202306L +// # define __cpp_lib_rcu 202306L +// # define __cpp_lib_smart_ptr_owner_equality 202306L +// # define __cpp_lib_sstream_from_string_view 202306L +// # define __cpp_lib_submdspan 202306L +// # define __cpp_lib_text_encoding 202306L +// # define __cpp_lib_within_lifetime 202306L #endif // clang-format on diff --git a/libcxx/modules/CMakeLists.txt b/libcxx/modules/CMakeLists.txt --- a/libcxx/modules/CMakeLists.txt +++ b/libcxx/modules/CMakeLists.txt @@ -56,6 +56,7 @@ std/functional.cppm std/future.cppm std/generator.cppm + std/hazard_pointer.cppm std/initializer_list.cppm std/iomanip.cppm std/ios.cppm @@ -83,6 +84,7 @@ std/random.cppm std/ranges.cppm std/ratio.cppm + std/rcu.cppm std/regex.cppm std/scoped_allocator.cppm std/semaphore.cppm @@ -104,6 +106,7 @@ std/strstream.cppm std/syncstream.cppm std/system_error.cppm + std/text_encoding.cppm std/thread.cppm std/tuple.cppm std/type_traits.cppm diff --git a/libcxx/modules/std.cppm b/libcxx/modules/std.cppm --- a/libcxx/modules/std.cppm +++ b/libcxx/modules/std.cppm @@ -61,6 +61,7 @@ export import :functional; export import :future; export import :generator; +export import :hazard_pointer; export import :initializer_list; export import :iomanip; export import :ios; @@ -86,6 +87,7 @@ export import :random; export import :ranges; export import :ratio; +export import :rcu; export import :regex; export import :scoped_allocator; export import :semaphore; @@ -106,6 +108,7 @@ export import :strstream; export import :syncstream; export import :system_error; +export import :text_encoding; export import :thread; export import :tuple; export import :type_traits; diff --git a/libcxx/modules/std/hazard_pointer.cppm b/libcxx/modules/std/hazard_pointer.cppm new file mode 100644 --- /dev/null +++ b/libcxx/modules/std/hazard_pointer.cppm @@ -0,0 +1,30 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +module; +#if __has_include() +# error "include this header unconditionally and uncomment the exported symbols" +# include +#endif + +export module std:hazard_pointer; +export namespace std { +#if 0 +# if _LIBCPP_STD_VER >= 23 + // 4.1.3, class template hazard_pointer_obj_base + using std::hazard_pointer_obj_base; + // 4.1.4, class hazard_pointer + using std::hazard_pointer; + // 4.1.5, Construct non-empty hazard_pointer + using std::make_hazard_pointer; + // 4.1.6, Hazard pointer swap + using std::swap; +# endif // _LIBCPP_STD_VER >= 23 +#endif +} // namespace std diff --git a/libcxx/modules/std/rcu.cppm b/libcxx/modules/std/rcu.cppm new file mode 100644 --- /dev/null +++ b/libcxx/modules/std/rcu.cppm @@ -0,0 +1,29 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +module; +#if __has_include() +# error "include this header unconditionally and uncomment the exported symbols" +# include +#endif + +export module std:rcu; +export namespace std { +#if 0 +# if _LIBCPP_STD_VER >= 23 + // 2.2.3, class template rcu_obj_base using std::rcu_obj_base; + // 2.2.4, class rcu_domain + using std::rcu_domain; + using std::rcu_default_domain(); + using std::rcu_barrier; + using std::rcu_retire; + using std::rcu_synchronize; +# endif // _LIBCPP_STD_VER >= 23 +#endif +} // namespace std diff --git a/libcxx/modules/std/text_encoding.cppm b/libcxx/modules/std/text_encoding.cppm new file mode 100644 --- /dev/null +++ b/libcxx/modules/std/text_encoding.cppm @@ -0,0 +1,26 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +module; +#if __has_include() +# error "include this header unconditionally and uncomment the exported symbols" +# include +#endif + +export module std:text_encoding; +export namespace std { +#if 0 +# if _LIBCPP_STD_VER >= 23 + using std::text_encoding; + + // hash support + using std::hash; +# endif // _LIBCPP_STD_VER >= 23 +#endif +} // namespace std diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bitset.version.compile.pass.cpp @@ -16,6 +16,7 @@ // Test the feature test macros defined by /* Constant Value + __cpp_lib_bitset 202306L [C++26] __cpp_lib_constexpr_bitset 202207L [C++23] */ @@ -24,30 +25,50 @@ #if TEST_STD_VER < 14 +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should not be defined before c++23" # endif #elif TEST_STD_VER == 14 +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should not be defined before c++23" # endif #elif TEST_STD_VER == 17 +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should not be defined before c++23" # endif #elif TEST_STD_VER == 20 +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should not be defined before c++23" # endif #elif TEST_STD_VER == 23 +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifndef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should be defined in c++23" # endif @@ -57,6 +78,19 @@ #elif TEST_STD_VER > 23 +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_bitset +# error "__cpp_lib_bitset should be defined in c++26" +# endif +# if __cpp_lib_bitset != 202306L +# error "__cpp_lib_bitset should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_constexpr_bitset # error "__cpp_lib_constexpr_bitset should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/fstream.version.compile.pass.cpp @@ -0,0 +1,73 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// WARNING: This test was generated by generate_feature_test_macro_components.py +// and should not be edited manually. +// +// clang-format off + +// UNSUPPORTED: no-localization + +// + +// Test the feature test macros defined by + +/* Constant Value + __cpp_lib_fstream_native_handle 202306L [C++26] +*/ + +#include +#include "test_macros.h" + +#if TEST_STD_VER < 14 + +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 14 + +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 17 + +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 20 + +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 23 + +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +#elif TEST_STD_VER > 23 + +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should be defined in c++26" +# endif +# if __cpp_lib_fstream_native_handle != 202306L +# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined because it is unimplemented in libc++!" +# endif +# endif + +#endif // TEST_STD_VER > 23 + diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp @@ -17,9 +17,13 @@ /* Constant Value __cpp_lib_bind_back 202202L [C++23] + 202306L [C++26] __cpp_lib_bind_front 201907L [C++20] + 202306L [C++26] __cpp_lib_boyer_moore_searcher 201603L [C++17] __cpp_lib_constexpr_functional 201907L [C++20] + __cpp_lib_copyable_function 202306L [C++26] + __cpp_lib_function_ref 202606L [C++26] __cpp_lib_invoke 201411L [C++17] __cpp_lib_invoke_r 202106L [C++23] __cpp_lib_move_only_function 202110L [C++23] @@ -52,6 +56,14 @@ # error "__cpp_lib_constexpr_functional should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifdef __cpp_lib_invoke # error "__cpp_lib_invoke should not be defined before c++17" # endif @@ -102,6 +114,14 @@ # error "__cpp_lib_constexpr_functional should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifdef __cpp_lib_invoke # error "__cpp_lib_invoke should not be defined before c++17" # endif @@ -161,6 +181,14 @@ # error "__cpp_lib_constexpr_functional should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_invoke # error "__cpp_lib_invoke should be defined in c++17" # endif @@ -232,6 +260,14 @@ # error "__cpp_lib_constexpr_functional should have the value 201907L in c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_invoke # error "__cpp_lib_invoke should be defined in c++20" # endif @@ -318,6 +354,14 @@ # error "__cpp_lib_constexpr_functional should have the value 201907L in c++23" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_invoke # error "__cpp_lib_invoke should be defined in c++23" # endif @@ -386,8 +430,8 @@ # ifndef __cpp_lib_bind_back # error "__cpp_lib_bind_back should be defined in c++26" # endif -# if __cpp_lib_bind_back != 202202L -# error "__cpp_lib_bind_back should have the value 202202L in c++26" +# if __cpp_lib_bind_back != 202306L +# error "__cpp_lib_bind_back should have the value 202306L in c++26" # endif # else // _LIBCPP_VERSION # ifdef __cpp_lib_bind_back @@ -398,8 +442,8 @@ # ifndef __cpp_lib_bind_front # error "__cpp_lib_bind_front should be defined in c++26" # endif -# if __cpp_lib_bind_front != 201907L -# error "__cpp_lib_bind_front should have the value 201907L in c++26" +# if __cpp_lib_bind_front != 202306L +# error "__cpp_lib_bind_front should have the value 202306L in c++26" # endif # ifndef __cpp_lib_boyer_moore_searcher @@ -416,6 +460,32 @@ # error "__cpp_lib_constexpr_functional should have the value 201907L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should be defined in c++26" +# endif +# if __cpp_lib_copyable_function != 202306L +# error "__cpp_lib_copyable_function should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!" +# endif +# endif + +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should be defined in c++26" +# endif +# if __cpp_lib_function_ref != 202606L +# error "__cpp_lib_function_ref should have the value 202606L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_invoke # error "__cpp_lib_invoke should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp @@ -15,15 +15,16 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] - __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] - __cpp_lib_erase_if 202002L [C++20] - __cpp_lib_generic_associative_lookup 201304L [C++14] - __cpp_lib_map_try_emplace 201411L [C++17] - __cpp_lib_node_extract 201606L [C++17] - __cpp_lib_nonmember_container_access 201411L [C++17] - __cpp_lib_ranges_to_container 202202L [C++23] +/* Constant Value + __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] + __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] + __cpp_lib_associative_heterogeneous_insertion 202306L [C++26] + __cpp_lib_erase_if 202002L [C++20] + __cpp_lib_generic_associative_lookup 201304L [C++14] + __cpp_lib_map_try_emplace 201411L [C++17] + __cpp_lib_node_extract 201606L [C++17] + __cpp_lib_nonmember_container_access 201411L [C++17] + __cpp_lib_ranges_to_container 202202L [C++23] */ #include @@ -39,6 +40,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -73,6 +78,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -113,6 +122,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -162,6 +175,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++20" # endif @@ -223,6 +240,10 @@ # endif # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++23" # endif @@ -293,6 +314,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26" +# endif +# if __cpp_lib_associative_heterogeneous_insertion != 202306L +# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp @@ -15,8 +15,9 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_mdspan 202207L [C++23] +/* Constant Value + __cpp_lib_mdspan 202207L [C++23] + __cpp_lib_submdspan 202306L [C++26] */ #include @@ -28,24 +29,40 @@ # error "__cpp_lib_mdspan should not be defined before c++23" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + #elif TEST_STD_VER == 14 # ifdef __cpp_lib_mdspan # error "__cpp_lib_mdspan should not be defined before c++23" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + #elif TEST_STD_VER == 17 # ifdef __cpp_lib_mdspan # error "__cpp_lib_mdspan should not be defined before c++23" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + #elif TEST_STD_VER == 20 # ifdef __cpp_lib_mdspan # error "__cpp_lib_mdspan should not be defined before c++23" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + #elif TEST_STD_VER == 23 # if !defined(_LIBCPP_VERSION) @@ -61,6 +78,10 @@ # endif # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + #elif TEST_STD_VER > 23 # if !defined(_LIBCPP_VERSION) @@ -76,5 +97,18 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should be defined in c++26" +# endif +# if __cpp_lib_submdspan != 202306L +# error "__cpp_lib_submdspan should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!" +# endif +# endif + #endif // TEST_STD_VER > 23 diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp @@ -33,6 +33,7 @@ 201707L [C++20] __cpp_lib_shared_ptr_weak_type 201606L [C++17] __cpp_lib_smart_ptr_for_overwrite 202002L [C++20] + __cpp_lib_smart_ptr_owner_equality 202306L [C++26] __cpp_lib_to_address 201711L [C++20] __cpp_lib_transparent_operators 201210L [C++14] 201510L [C++17] @@ -103,6 +104,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_to_address # error "__cpp_lib_to_address should not be defined before c++20" # endif @@ -176,6 +181,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_to_address # error "__cpp_lib_to_address should not be defined before c++20" # endif @@ -270,6 +279,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_to_address # error "__cpp_lib_to_address should not be defined before c++20" # endif @@ -388,6 +401,10 @@ # endif # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifndef __cpp_lib_to_address # error "__cpp_lib_to_address should be defined in c++20" # endif @@ -521,6 +538,10 @@ # endif # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifndef __cpp_lib_to_address # error "__cpp_lib_to_address should be defined in c++23" # endif @@ -654,6 +675,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26" +# endif +# if __cpp_lib_smart_ptr_owner_equality != 202306L +# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_to_address # error "__cpp_lib_to_address should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ratio.version.compile.pass.cpp @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// WARNING: This test was generated by generate_feature_test_macro_components.py +// and should not be edited manually. +// +// clang-format off + +// + +// Test the feature test macros defined by + +/* Constant Value + __cpp_lib_ratio 202306L [C++26] +*/ + +#include +#include "test_macros.h" + +#if TEST_STD_VER < 14 + +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 14 + +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 17 + +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 20 + +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 23 + +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + +#elif TEST_STD_VER > 23 + +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_ratio +# error "__cpp_lib_ratio should be defined in c++26" +# endif +# if __cpp_lib_ratio != 202306L +# error "__cpp_lib_ratio should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined because it is unimplemented in libc++!" +# endif +# endif + +#endif // TEST_STD_VER > 23 + diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/set.version.compile.pass.cpp @@ -15,14 +15,15 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] - __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] - __cpp_lib_erase_if 202002L [C++20] - __cpp_lib_generic_associative_lookup 201304L [C++14] - __cpp_lib_node_extract 201606L [C++17] - __cpp_lib_nonmember_container_access 201411L [C++17] - __cpp_lib_ranges_to_container 202202L [C++23] +/* Constant Value + __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] + __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] + __cpp_lib_associative_heterogeneous_insertion 202306L [C++26] + __cpp_lib_erase_if 202002L [C++20] + __cpp_lib_generic_associative_lookup 201304L [C++14] + __cpp_lib_node_extract 201606L [C++17] + __cpp_lib_nonmember_container_access 201411L [C++17] + __cpp_lib_ranges_to_container 202202L [C++23] */ #include @@ -38,6 +39,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -68,6 +73,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -104,6 +113,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -146,6 +159,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++20" # endif @@ -200,6 +217,10 @@ # endif # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++23" # endif @@ -263,6 +284,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26" +# endif +# if __cpp_lib_associative_heterogeneous_insertion != 202306L +# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/sstream.version.compile.pass.cpp @@ -0,0 +1,73 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// WARNING: This test was generated by generate_feature_test_macro_components.py +// and should not be edited manually. +// +// clang-format off + +// UNSUPPORTED: no-localization + +// + +// Test the feature test macros defined by + +/* Constant Value + __cpp_lib_sstream_from_string_view 202306L [C++26] +*/ + +#include +#include "test_macros.h" + +#if TEST_STD_VER < 14 + +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 14 + +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 17 + +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 20 + +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + +#elif TEST_STD_VER == 23 + +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + +#elif TEST_STD_VER > 23 + +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should be defined in c++26" +# endif +# if __cpp_lib_sstream_from_string_view != 202306L +# error "__cpp_lib_sstream_from_string_view should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined because it is unimplemented in libc++!" +# endif +# endif + +#endif // TEST_STD_VER > 23 + diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp @@ -28,6 +28,7 @@ __cpp_lib_string_udls 201304L [C++14] __cpp_lib_string_view 201606L [C++17] 201803L [C++20] + __cpp_lib_to_string 202306L [C++23] */ #include @@ -79,6 +80,10 @@ # error "__cpp_lib_string_view should not be defined before c++17" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + #elif TEST_STD_VER == 14 # ifdef __cpp_lib_allocator_traits_is_always_equal @@ -128,6 +133,10 @@ # error "__cpp_lib_string_view should not be defined before c++17" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + #elif TEST_STD_VER == 17 # ifndef __cpp_lib_allocator_traits_is_always_equal @@ -186,6 +195,10 @@ # error "__cpp_lib_string_view should have the value 201606L in c++17" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + #elif TEST_STD_VER == 20 # ifndef __cpp_lib_allocator_traits_is_always_equal @@ -262,6 +275,10 @@ # error "__cpp_lib_string_view should have the value 201803L in c++20" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + #elif TEST_STD_VER == 23 # ifndef __cpp_lib_allocator_traits_is_always_equal @@ -353,6 +370,19 @@ # error "__cpp_lib_string_view should have the value 201803L in c++23" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_to_string +# error "__cpp_lib_to_string should be defined in c++23" +# endif +# if __cpp_lib_to_string != 202306L +# error "__cpp_lib_to_string should have the value 202306L in c++23" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" +# endif +# endif + #elif TEST_STD_VER > 23 # ifndef __cpp_lib_allocator_traits_is_always_equal @@ -444,5 +474,18 @@ # error "__cpp_lib_string_view should have the value 201803L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_to_string +# error "__cpp_lib_to_string should be defined in c++26" +# endif +# if __cpp_lib_to_string != 202306L +# error "__cpp_lib_to_string should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" +# endif +# endif + #endif // TEST_STD_VER > 23 diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp @@ -38,6 +38,7 @@ __cpp_lib_type_identity 201806L [C++20] __cpp_lib_type_trait_variable_templates 201510L [C++17] __cpp_lib_void_t 201411L [C++17] + __cpp_lib_within_lifetime 202306L [C++26] */ #include @@ -133,6 +134,10 @@ # error "__cpp_lib_void_t should not be defined before c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 14 # ifdef __cpp_lib_bool_constant @@ -238,6 +243,10 @@ # error "__cpp_lib_void_t should not be defined before c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 17 # ifndef __cpp_lib_bool_constant @@ -367,6 +376,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 20 # ifndef __cpp_lib_bool_constant @@ -529,6 +542,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++20" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 23 # ifndef __cpp_lib_bool_constant @@ -703,6 +720,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++23" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER > 23 # ifndef __cpp_lib_bool_constant @@ -877,5 +898,18 @@ # error "__cpp_lib_void_t should have the value 201411L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should be defined in c++26" +# endif +# if __cpp_lib_within_lifetime != 202306L +# error "__cpp_lib_within_lifetime should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined because it is unimplemented in libc++!" +# endif +# endif + #endif // TEST_STD_VER > 23 diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp @@ -15,15 +15,16 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] - __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] - __cpp_lib_erase_if 202002L [C++20] - __cpp_lib_generic_unordered_lookup 201811L [C++20] - __cpp_lib_node_extract 201606L [C++17] - __cpp_lib_nonmember_container_access 201411L [C++17] - __cpp_lib_ranges_to_container 202202L [C++23] - __cpp_lib_unordered_map_try_emplace 201411L [C++17] +/* Constant Value + __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] + __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] + __cpp_lib_associative_heterogeneous_insertion 202306L [C++26] + __cpp_lib_erase_if 202002L [C++20] + __cpp_lib_generic_unordered_lookup 201811L [C++20] + __cpp_lib_node_extract 201606L [C++17] + __cpp_lib_nonmember_container_access 201411L [C++17] + __cpp_lib_ranges_to_container 202202L [C++23] + __cpp_lib_unordered_map_try_emplace 201411L [C++17] */ #include @@ -39,6 +40,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -73,6 +78,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -110,6 +119,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -156,6 +169,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++20" # endif @@ -217,6 +234,10 @@ # endif # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++23" # endif @@ -287,6 +308,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26" +# endif +# if __cpp_lib_associative_heterogeneous_insertion != 202306L +# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/unordered_set.version.compile.pass.cpp @@ -15,14 +15,15 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] - __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] - __cpp_lib_erase_if 202002L [C++20] - __cpp_lib_generic_unordered_lookup 201811L [C++20] - __cpp_lib_node_extract 201606L [C++17] - __cpp_lib_nonmember_container_access 201411L [C++17] - __cpp_lib_ranges_to_container 202202L [C++23] +/* Constant Value + __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] + __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] + __cpp_lib_associative_heterogeneous_insertion 202306L [C++26] + __cpp_lib_erase_if 202002L [C++20] + __cpp_lib_generic_unordered_lookup 201811L [C++20] + __cpp_lib_node_extract 201606L [C++17] + __cpp_lib_nonmember_container_access 201411L [C++17] + __cpp_lib_ranges_to_container 202202L [C++23] */ #include @@ -38,6 +39,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -68,6 +73,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -101,6 +110,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_erase_if # error "__cpp_lib_erase_if should not be defined before c++20" # endif @@ -140,6 +153,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++20" # endif @@ -194,6 +211,10 @@ # endif # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++23" # endif @@ -257,6 +278,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26" +# endif +# if __cpp_lib_associative_heterogeneous_insertion != 202306L +# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_erase_if # error "__cpp_lib_erase_if should be defined in c++26" # endif diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp @@ -15,178 +15,194 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23] - __cpp_lib_addressof_constexpr 201603L [C++17] - __cpp_lib_allocate_at_least 202106L [C++23] - __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] - __cpp_lib_any 201606L [C++17] - __cpp_lib_apply 201603L [C++17] - __cpp_lib_array_constexpr 201603L [C++17] - 201811L [C++20] - __cpp_lib_as_const 201510L [C++17] - __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] - __cpp_lib_assume_aligned 201811L [C++20] - __cpp_lib_atomic_flag_test 201907L [C++20] - __cpp_lib_atomic_float 201711L [C++20] - __cpp_lib_atomic_is_always_lock_free 201603L [C++17] - __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20] - __cpp_lib_atomic_ref 201806L [C++20] - __cpp_lib_atomic_shared_ptr 201711L [C++20] - __cpp_lib_atomic_value_initialization 201911L [C++20] - __cpp_lib_atomic_wait 201907L [C++20] - __cpp_lib_barrier 201907L [C++20] - __cpp_lib_bind_back 202202L [C++23] - __cpp_lib_bind_front 201907L [C++20] - __cpp_lib_bit_cast 201806L [C++20] - __cpp_lib_bitops 201907L [C++20] - __cpp_lib_bool_constant 201505L [C++17] - __cpp_lib_bounded_array_traits 201902L [C++20] - __cpp_lib_boyer_moore_searcher 201603L [C++17] - __cpp_lib_byte 201603L [C++17] - __cpp_lib_byteswap 202110L [C++23] - __cpp_lib_char8_t 201907L [C++20] - __cpp_lib_chrono 201611L [C++17] - __cpp_lib_chrono_udls 201304L [C++14] - __cpp_lib_clamp 201603L [C++17] - __cpp_lib_complex_udls 201309L [C++14] - __cpp_lib_concepts 202002L [C++20] - __cpp_lib_constexpr_algorithms 201806L [C++20] - __cpp_lib_constexpr_bitset 202207L [C++23] - __cpp_lib_constexpr_charconv 202207L [C++23] - __cpp_lib_constexpr_cmath 202202L [C++23] - __cpp_lib_constexpr_complex 201711L [C++20] - __cpp_lib_constexpr_dynamic_alloc 201907L [C++20] - __cpp_lib_constexpr_functional 201907L [C++20] - __cpp_lib_constexpr_iterator 201811L [C++20] - __cpp_lib_constexpr_memory 201811L [C++20] - 202202L [C++23] - __cpp_lib_constexpr_numeric 201911L [C++20] - __cpp_lib_constexpr_string 201907L [C++20] - __cpp_lib_constexpr_string_view 201811L [C++20] - __cpp_lib_constexpr_tuple 201811L [C++20] - __cpp_lib_constexpr_typeinfo 202106L [C++23] - __cpp_lib_constexpr_utility 201811L [C++20] - __cpp_lib_constexpr_vector 201907L [C++20] - __cpp_lib_coroutine 201902L [C++20] - __cpp_lib_destroying_delete 201806L [C++20] - __cpp_lib_enable_shared_from_this 201603L [C++17] - __cpp_lib_endian 201907L [C++20] - __cpp_lib_erase_if 202002L [C++20] - __cpp_lib_exchange_function 201304L [C++14] - __cpp_lib_execution 201603L [C++17] - 201902L [C++20] - __cpp_lib_expected 202211L [C++23] - __cpp_lib_filesystem 201703L [C++17] - __cpp_lib_format 202106L [C++20] - __cpp_lib_format_ranges 202207L [C++23] - __cpp_lib_formatters 202302L [C++23] - __cpp_lib_forward_like 202207L [C++23] - __cpp_lib_gcd_lcm 201606L [C++17] - __cpp_lib_generic_associative_lookup 201304L [C++14] - __cpp_lib_generic_unordered_lookup 201811L [C++20] - __cpp_lib_hardware_interference_size 201703L [C++17] - __cpp_lib_has_unique_object_representations 201606L [C++17] - __cpp_lib_hypot 201603L [C++17] - __cpp_lib_incomplete_container_elements 201505L [C++17] - __cpp_lib_int_pow2 202002L [C++20] - __cpp_lib_integer_comparison_functions 202002L [C++20] - __cpp_lib_integer_sequence 201304L [C++14] - __cpp_lib_integral_constant_callable 201304L [C++14] - __cpp_lib_interpolate 201902L [C++20] - __cpp_lib_invoke 201411L [C++17] - __cpp_lib_invoke_r 202106L [C++23] - __cpp_lib_is_aggregate 201703L [C++17] - __cpp_lib_is_constant_evaluated 201811L [C++20] - __cpp_lib_is_final 201402L [C++14] - __cpp_lib_is_invocable 201703L [C++17] - __cpp_lib_is_layout_compatible 201907L [C++20] - __cpp_lib_is_nothrow_convertible 201806L [C++20] - __cpp_lib_is_null_pointer 201309L [C++14] - __cpp_lib_is_pointer_interconvertible 201907L [C++20] - __cpp_lib_is_scoped_enum 202011L [C++23] - __cpp_lib_is_swappable 201603L [C++17] - __cpp_lib_jthread 201911L [C++20] - __cpp_lib_latch 201907L [C++20] - __cpp_lib_launder 201606L [C++17] - __cpp_lib_list_remove_return_type 201806L [C++20] - __cpp_lib_logical_traits 201510L [C++17] - __cpp_lib_make_from_tuple 201606L [C++17] - __cpp_lib_make_reverse_iterator 201402L [C++14] - __cpp_lib_make_unique 201304L [C++14] - __cpp_lib_map_try_emplace 201411L [C++17] - __cpp_lib_math_constants 201907L [C++20] - __cpp_lib_math_special_functions 201603L [C++17] - __cpp_lib_mdspan 202207L [C++23] - __cpp_lib_memory_resource 201603L [C++17] - __cpp_lib_move_iterator_concept 202207L [C++20] - __cpp_lib_move_only_function 202110L [C++23] - __cpp_lib_node_extract 201606L [C++17] - __cpp_lib_nonmember_container_access 201411L [C++17] - __cpp_lib_not_fn 201603L [C++17] - __cpp_lib_null_iterators 201304L [C++14] - __cpp_lib_optional 201606L [C++17] - 202110L [C++23] - __cpp_lib_out_ptr 202106L [C++23] - __cpp_lib_parallel_algorithm 201603L [C++17] - __cpp_lib_polymorphic_allocator 201902L [C++20] - __cpp_lib_quoted_string_io 201304L [C++14] - __cpp_lib_ranges 202106L [C++20] - __cpp_lib_ranges_as_rvalue 202207L [C++23] - __cpp_lib_ranges_chunk 202202L [C++23] - __cpp_lib_ranges_chunk_by 202202L [C++23] - __cpp_lib_ranges_iota 202202L [C++23] - __cpp_lib_ranges_join_with 202202L [C++23] - __cpp_lib_ranges_slide 202202L [C++23] - __cpp_lib_ranges_starts_ends_with 202106L [C++23] - __cpp_lib_ranges_to_container 202202L [C++23] - __cpp_lib_ranges_zip 202110L [C++23] - __cpp_lib_raw_memory_algorithms 201606L [C++17] - __cpp_lib_reference_from_temporary 202202L [C++23] - __cpp_lib_remove_cvref 201711L [C++20] - __cpp_lib_result_of_sfinae 201210L [C++14] - __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14] - __cpp_lib_sample 201603L [C++17] - __cpp_lib_scoped_lock 201703L [C++17] - __cpp_lib_semaphore 201907L [C++20] - __cpp_lib_shared_mutex 201505L [C++17] - __cpp_lib_shared_ptr_arrays 201611L [C++17] - 201707L [C++20] - __cpp_lib_shared_ptr_weak_type 201606L [C++17] - __cpp_lib_shared_timed_mutex 201402L [C++14] - __cpp_lib_shift 201806L [C++20] - __cpp_lib_smart_ptr_for_overwrite 202002L [C++20] - __cpp_lib_source_location 201907L [C++20] - __cpp_lib_span 202002L [C++20] - __cpp_lib_spanstream 202106L [C++23] - __cpp_lib_ssize 201902L [C++20] - __cpp_lib_stacktrace 202011L [C++23] - __cpp_lib_starts_ends_with 201711L [C++20] - __cpp_lib_stdatomic_h 202011L [C++23] - __cpp_lib_string_contains 202011L [C++23] - __cpp_lib_string_resize_and_overwrite 202110L [C++23] - __cpp_lib_string_udls 201304L [C++14] - __cpp_lib_string_view 201606L [C++17] - 201803L [C++20] - __cpp_lib_syncbuf 201803L [C++20] - __cpp_lib_three_way_comparison 201907L [C++20] - __cpp_lib_to_address 201711L [C++20] - __cpp_lib_to_array 201907L [C++20] - __cpp_lib_to_chars 201611L [C++17] - __cpp_lib_to_underlying 202102L [C++23] - __cpp_lib_transformation_trait_aliases 201304L [C++14] - __cpp_lib_transparent_operators 201210L [C++14] - 201510L [C++17] - __cpp_lib_tuple_element_t 201402L [C++14] - __cpp_lib_tuples_by_type 201304L [C++14] - __cpp_lib_type_identity 201806L [C++20] - __cpp_lib_type_trait_variable_templates 201510L [C++17] - __cpp_lib_uncaught_exceptions 201411L [C++17] - __cpp_lib_unordered_map_try_emplace 201411L [C++17] - __cpp_lib_unreachable 202202L [C++23] - __cpp_lib_unwrap_ref 201811L [C++20] - __cpp_lib_variant 202102L [C++17] - __cpp_lib_void_t 201411L [C++17] +/* Constant Value + __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23] + __cpp_lib_addressof_constexpr 201603L [C++17] + __cpp_lib_allocate_at_least 202106L [C++23] + __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] + __cpp_lib_any 201606L [C++17] + __cpp_lib_apply 201603L [C++17] + __cpp_lib_array_constexpr 201603L [C++17] + 201811L [C++20] + __cpp_lib_as_const 201510L [C++17] + __cpp_lib_associative_heterogeneous_erasure 202110L [C++23] + __cpp_lib_associative_heterogeneous_insertion 202306L [C++26] + __cpp_lib_assume_aligned 201811L [C++20] + __cpp_lib_atomic_flag_test 201907L [C++20] + __cpp_lib_atomic_float 201711L [C++20] + __cpp_lib_atomic_is_always_lock_free 201603L [C++17] + __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20] + __cpp_lib_atomic_ref 201806L [C++20] + __cpp_lib_atomic_shared_ptr 201711L [C++20] + __cpp_lib_atomic_value_initialization 201911L [C++20] + __cpp_lib_atomic_wait 201907L [C++20] + __cpp_lib_barrier 201907L [C++20] + __cpp_lib_bind_back 202202L [C++23] + 202306L [C++26] + __cpp_lib_bind_front 201907L [C++20] + 202306L [C++26] + __cpp_lib_bit_cast 201806L [C++20] + __cpp_lib_bitops 201907L [C++20] + __cpp_lib_bitset 202306L [C++26] + __cpp_lib_bool_constant 201505L [C++17] + __cpp_lib_bounded_array_traits 201902L [C++20] + __cpp_lib_boyer_moore_searcher 201603L [C++17] + __cpp_lib_byte 201603L [C++17] + __cpp_lib_byteswap 202110L [C++23] + __cpp_lib_char8_t 201907L [C++20] + __cpp_lib_chrono 201611L [C++17] + __cpp_lib_chrono_udls 201304L [C++14] + __cpp_lib_clamp 201603L [C++17] + __cpp_lib_complex_udls 201309L [C++14] + __cpp_lib_concepts 202002L [C++20] + __cpp_lib_constexpr_algorithms 201806L [C++20] + __cpp_lib_constexpr_bitset 202207L [C++23] + __cpp_lib_constexpr_charconv 202207L [C++23] + __cpp_lib_constexpr_cmath 202202L [C++23] + __cpp_lib_constexpr_complex 201711L [C++20] + __cpp_lib_constexpr_dynamic_alloc 201907L [C++20] + __cpp_lib_constexpr_functional 201907L [C++20] + __cpp_lib_constexpr_iterator 201811L [C++20] + __cpp_lib_constexpr_memory 201811L [C++20] + 202202L [C++23] + __cpp_lib_constexpr_numeric 201911L [C++20] + __cpp_lib_constexpr_string 201907L [C++20] + __cpp_lib_constexpr_string_view 201811L [C++20] + __cpp_lib_constexpr_tuple 201811L [C++20] + __cpp_lib_constexpr_typeinfo 202106L [C++23] + __cpp_lib_constexpr_utility 201811L [C++20] + __cpp_lib_constexpr_vector 201907L [C++20] + __cpp_lib_copyable_function 202306L [C++26] + __cpp_lib_coroutine 201902L [C++20] + __cpp_lib_destroying_delete 201806L [C++20] + __cpp_lib_enable_shared_from_this 201603L [C++17] + __cpp_lib_endian 201907L [C++20] + __cpp_lib_erase_if 202002L [C++20] + __cpp_lib_exchange_function 201304L [C++14] + __cpp_lib_execution 201603L [C++17] + 201902L [C++20] + __cpp_lib_expected 202211L [C++23] + __cpp_lib_filesystem 201703L [C++17] + __cpp_lib_format 202106L [C++20] + __cpp_lib_format_ranges 202207L [C++23] + __cpp_lib_formatters 202302L [C++23] + __cpp_lib_forward_like 202207L [C++23] + __cpp_lib_fstream_native_handle 202306L [C++26] + __cpp_lib_function_ref 202606L [C++26] + __cpp_lib_gcd_lcm 201606L [C++17] + __cpp_lib_generic_associative_lookup 201304L [C++14] + __cpp_lib_generic_unordered_lookup 201811L [C++20] + __cpp_lib_hardware_interference_size 201703L [C++17] + __cpp_lib_has_unique_object_representations 201606L [C++17] + __cpp_lib_hazard_pointer 202306L [C++26] + __cpp_lib_hypot 201603L [C++17] + __cpp_lib_incomplete_container_elements 201505L [C++17] + __cpp_lib_int_pow2 202002L [C++20] + __cpp_lib_integer_comparison_functions 202002L [C++20] + __cpp_lib_integer_sequence 201304L [C++14] + __cpp_lib_integral_constant_callable 201304L [C++14] + __cpp_lib_interpolate 201902L [C++20] + __cpp_lib_invoke 201411L [C++17] + __cpp_lib_invoke_r 202106L [C++23] + __cpp_lib_is_aggregate 201703L [C++17] + __cpp_lib_is_constant_evaluated 201811L [C++20] + __cpp_lib_is_final 201402L [C++14] + __cpp_lib_is_invocable 201703L [C++17] + __cpp_lib_is_layout_compatible 201907L [C++20] + __cpp_lib_is_nothrow_convertible 201806L [C++20] + __cpp_lib_is_null_pointer 201309L [C++14] + __cpp_lib_is_pointer_interconvertible 201907L [C++20] + __cpp_lib_is_scoped_enum 202011L [C++23] + __cpp_lib_is_swappable 201603L [C++17] + __cpp_lib_jthread 201911L [C++20] + __cpp_lib_latch 201907L [C++20] + __cpp_lib_launder 201606L [C++17] + __cpp_lib_list_remove_return_type 201806L [C++20] + __cpp_lib_logical_traits 201510L [C++17] + __cpp_lib_make_from_tuple 201606L [C++17] + __cpp_lib_make_reverse_iterator 201402L [C++14] + __cpp_lib_make_unique 201304L [C++14] + __cpp_lib_map_try_emplace 201411L [C++17] + __cpp_lib_math_constants 201907L [C++20] + __cpp_lib_math_special_functions 201603L [C++17] + __cpp_lib_mdspan 202207L [C++23] + __cpp_lib_memory_resource 201603L [C++17] + __cpp_lib_move_iterator_concept 202207L [C++20] + __cpp_lib_move_only_function 202110L [C++23] + __cpp_lib_node_extract 201606L [C++17] + __cpp_lib_nonmember_container_access 201411L [C++17] + __cpp_lib_not_fn 201603L [C++17] + __cpp_lib_null_iterators 201304L [C++14] + __cpp_lib_optional 201606L [C++17] + 202110L [C++23] + __cpp_lib_out_ptr 202106L [C++23] + __cpp_lib_parallel_algorithm 201603L [C++17] + __cpp_lib_polymorphic_allocator 201902L [C++20] + __cpp_lib_quoted_string_io 201304L [C++14] + __cpp_lib_ranges 202106L [C++20] + __cpp_lib_ranges_as_rvalue 202207L [C++23] + __cpp_lib_ranges_chunk 202202L [C++23] + __cpp_lib_ranges_chunk_by 202202L [C++23] + __cpp_lib_ranges_iota 202202L [C++23] + __cpp_lib_ranges_join_with 202202L [C++23] + __cpp_lib_ranges_slide 202202L [C++23] + __cpp_lib_ranges_starts_ends_with 202106L [C++23] + __cpp_lib_ranges_to_container 202202L [C++23] + __cpp_lib_ranges_zip 202110L [C++23] + __cpp_lib_ratio 202306L [C++26] + __cpp_lib_raw_memory_algorithms 201606L [C++17] + __cpp_lib_rcu 202306L [C++26] + __cpp_lib_reference_from_temporary 202202L [C++23] + __cpp_lib_remove_cvref 201711L [C++20] + __cpp_lib_result_of_sfinae 201210L [C++14] + __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14] + __cpp_lib_sample 201603L [C++17] + __cpp_lib_scoped_lock 201703L [C++17] + __cpp_lib_semaphore 201907L [C++20] + __cpp_lib_shared_mutex 201505L [C++17] + __cpp_lib_shared_ptr_arrays 201611L [C++17] + 201707L [C++20] + __cpp_lib_shared_ptr_weak_type 201606L [C++17] + __cpp_lib_shared_timed_mutex 201402L [C++14] + __cpp_lib_shift 201806L [C++20] + __cpp_lib_smart_ptr_for_overwrite 202002L [C++20] + __cpp_lib_smart_ptr_owner_equality 202306L [C++26] + __cpp_lib_source_location 201907L [C++20] + __cpp_lib_span 202002L [C++20] + __cpp_lib_spanstream 202106L [C++23] + __cpp_lib_ssize 201902L [C++20] + __cpp_lib_sstream_from_string_view 202306L [C++26] + __cpp_lib_stacktrace 202011L [C++23] + __cpp_lib_starts_ends_with 201711L [C++20] + __cpp_lib_stdatomic_h 202011L [C++23] + __cpp_lib_string_contains 202011L [C++23] + __cpp_lib_string_resize_and_overwrite 202110L [C++23] + __cpp_lib_string_udls 201304L [C++14] + __cpp_lib_string_view 201606L [C++17] + 201803L [C++20] + __cpp_lib_submdspan 202306L [C++26] + __cpp_lib_syncbuf 201803L [C++20] + __cpp_lib_text_encoding 202306L [C++26] + __cpp_lib_three_way_comparison 201907L [C++20] + __cpp_lib_to_address 201711L [C++20] + __cpp_lib_to_array 201907L [C++20] + __cpp_lib_to_chars 201611L [C++17] + __cpp_lib_to_string 202306L [C++23] + __cpp_lib_to_underlying 202102L [C++23] + __cpp_lib_transformation_trait_aliases 201304L [C++14] + __cpp_lib_transparent_operators 201210L [C++14] + 201510L [C++17] + __cpp_lib_tuple_element_t 201402L [C++14] + __cpp_lib_tuples_by_type 201304L [C++14] + __cpp_lib_type_identity 201806L [C++20] + __cpp_lib_type_trait_variable_templates 201510L [C++17] + __cpp_lib_uncaught_exceptions 201411L [C++17] + __cpp_lib_unordered_map_try_emplace 201411L [C++17] + __cpp_lib_unreachable 202202L [C++23] + __cpp_lib_unwrap_ref 201811L [C++20] + __cpp_lib_variant 202102L [C++17] + __cpp_lib_void_t 201411L [C++17] + __cpp_lib_within_lifetime 202306L [C++26] */ #include @@ -230,6 +246,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should not be defined before c++20" # endif @@ -286,6 +306,10 @@ # error "__cpp_lib_bitops should not be defined before c++20" # endif +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should not be defined before c++17" # endif @@ -394,6 +418,10 @@ # error "__cpp_lib_constexpr_vector should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + # ifdef __cpp_lib_coroutine # error "__cpp_lib_coroutine should not be defined before c++20" # endif @@ -446,6 +474,14 @@ # error "__cpp_lib_forward_like should not be defined before c++23" # endif +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifdef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should not be defined before c++17" # endif @@ -466,6 +502,10 @@ # error "__cpp_lib_has_unique_object_representations should not be defined before c++17" # endif +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined before c++26" +# endif + # ifdef __cpp_lib_hypot # error "__cpp_lib_hypot should not be defined before c++17" # endif @@ -678,10 +718,18 @@ # error "__cpp_lib_ranges_zip should not be defined before c++23" # endif +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + # ifdef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" # endif +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined before c++26" +# endif + # ifdef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should not be defined before c++23" # endif @@ -734,6 +782,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_source_location # error "__cpp_lib_source_location should not be defined before c++20" # endif @@ -750,6 +802,10 @@ # error "__cpp_lib_ssize should not be defined before c++20" # endif +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + # ifdef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should not be defined before c++23" # endif @@ -778,10 +834,18 @@ # error "__cpp_lib_string_view should not be defined before c++17" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + # ifdef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should not be defined before c++20" # endif +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined before c++26" +# endif + # ifdef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should not be defined before c++20" # endif @@ -798,6 +862,10 @@ # error "__cpp_lib_to_chars should not be defined before c++17" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + # ifdef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should not be defined before c++23" # endif @@ -850,6 +918,10 @@ # error "__cpp_lib_void_t should not be defined before c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 14 # ifdef __cpp_lib_adaptor_iterator_pair_constructor @@ -888,6 +960,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should not be defined before c++20" # endif @@ -944,6 +1020,10 @@ # error "__cpp_lib_bitops should not be defined before c++20" # endif +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifdef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should not be defined before c++17" # endif @@ -1058,6 +1138,10 @@ # error "__cpp_lib_constexpr_vector should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + # ifdef __cpp_lib_coroutine # error "__cpp_lib_coroutine should not be defined before c++20" # endif @@ -1113,6 +1197,14 @@ # error "__cpp_lib_forward_like should not be defined before c++23" # endif +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifdef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should not be defined before c++17" # endif @@ -1136,6 +1228,10 @@ # error "__cpp_lib_has_unique_object_representations should not be defined before c++17" # endif +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined before c++26" +# endif + # ifdef __cpp_lib_hypot # error "__cpp_lib_hypot should not be defined before c++17" # endif @@ -1372,10 +1468,18 @@ # error "__cpp_lib_ranges_zip should not be defined before c++23" # endif +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + # ifdef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" # endif +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined before c++26" +# endif + # ifdef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should not be defined before c++23" # endif @@ -1443,6 +1547,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_source_location # error "__cpp_lib_source_location should not be defined before c++20" # endif @@ -1459,6 +1567,10 @@ # error "__cpp_lib_ssize should not be defined before c++20" # endif +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + # ifdef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should not be defined before c++23" # endif @@ -1490,10 +1602,18 @@ # error "__cpp_lib_string_view should not be defined before c++17" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + # ifdef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should not be defined before c++20" # endif +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined before c++26" +# endif + # ifdef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should not be defined before c++20" # endif @@ -1510,6 +1630,10 @@ # error "__cpp_lib_to_chars should not be defined before c++17" # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + # ifdef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should not be defined before c++23" # endif @@ -1574,6 +1698,10 @@ # error "__cpp_lib_void_t should not be defined before c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 17 # ifdef __cpp_lib_adaptor_iterator_pair_constructor @@ -1630,6 +1758,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifdef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should not be defined before c++20" # endif @@ -1689,6 +1821,10 @@ # error "__cpp_lib_bitops should not be defined before c++20" # endif +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifndef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should be defined in c++17" # endif @@ -1818,6 +1954,10 @@ # error "__cpp_lib_constexpr_vector should not be defined before c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + # ifdef __cpp_lib_coroutine # error "__cpp_lib_coroutine should not be defined before c++20" # endif @@ -1894,6 +2034,14 @@ # error "__cpp_lib_forward_like should not be defined before c++23" # endif +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should be defined in c++17" # endif @@ -1932,6 +2080,10 @@ # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" # endif +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined before c++26" +# endif + # ifndef __cpp_lib_hypot # error "__cpp_lib_hypot should be defined in c++17" # endif @@ -2231,6 +2383,10 @@ # error "__cpp_lib_ranges_zip should not be defined before c++23" # endif +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + # ifndef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should be defined in c++17" # endif @@ -2238,6 +2394,10 @@ # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17" # endif +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined before c++26" +# endif + # ifdef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should not be defined before c++23" # endif @@ -2326,6 +2486,10 @@ # error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20" # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # ifdef __cpp_lib_source_location # error "__cpp_lib_source_location should not be defined before c++20" # endif @@ -2342,6 +2506,10 @@ # error "__cpp_lib_ssize should not be defined before c++20" # endif +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + # ifdef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should not be defined before c++23" # endif @@ -2376,10 +2544,18 @@ # error "__cpp_lib_string_view should have the value 201606L in c++17" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + # ifdef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should not be defined before c++20" # endif +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined before c++26" +# endif + # ifdef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should not be defined before c++20" # endif @@ -2405,6 +2581,10 @@ # endif # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + # ifdef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should not be defined before c++23" # endif @@ -2484,6 +2664,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++17" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 20 # ifdef __cpp_lib_adaptor_iterator_pair_constructor @@ -2540,6 +2724,10 @@ # error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23" # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should be defined in c++20" # endif @@ -2671,6 +2859,10 @@ # endif # endif +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifndef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should be defined in c++20" # endif @@ -2851,6 +3043,10 @@ # error "__cpp_lib_constexpr_vector should have the value 201907L in c++20" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + # ifndef __cpp_lib_coroutine # error "__cpp_lib_coroutine should be defined in c++20" # endif @@ -2954,6 +3150,14 @@ # error "__cpp_lib_forward_like should not be defined before c++23" # endif +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should be defined in c++20" # endif @@ -2995,6 +3199,10 @@ # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" # endif +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined before c++26" +# endif + # ifndef __cpp_lib_hypot # error "__cpp_lib_hypot should be defined in c++20" # endif @@ -3360,6 +3568,10 @@ # error "__cpp_lib_ranges_zip should not be defined before c++23" # endif +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + # ifndef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should be defined in c++20" # endif @@ -3367,6 +3579,10 @@ # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20" # endif +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined before c++26" +# endif + # ifdef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should not be defined before c++23" # endif @@ -3479,6 +3695,10 @@ # endif # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403) # ifndef __cpp_lib_source_location # error "__cpp_lib_source_location should be defined in c++20" @@ -3510,6 +3730,10 @@ # error "__cpp_lib_ssize should have the value 201902L in c++20" # endif +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + # ifdef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should not be defined before c++23" # endif @@ -3547,6 +3771,10 @@ # error "__cpp_lib_string_view should have the value 201803L in c++20" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should be defined in c++20" @@ -3560,6 +3788,10 @@ # endif # endif +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++20" @@ -3600,6 +3832,10 @@ # endif # endif +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined before c++23" +# endif + # ifdef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should not be defined before c++23" # endif @@ -3685,6 +3921,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++20" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER == 23 # ifndef __cpp_lib_adaptor_iterator_pair_constructor @@ -3756,6 +3996,10 @@ # endif # endif +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26" +# endif + # ifndef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should be defined in c++23" # endif @@ -3896,6 +4140,10 @@ # endif # endif +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined before c++26" +# endif + # ifndef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should be defined in c++23" # endif @@ -4097,6 +4345,10 @@ # error "__cpp_lib_constexpr_vector should have the value 201907L in c++23" # endif +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined before c++26" +# endif + # ifndef __cpp_lib_coroutine # error "__cpp_lib_coroutine should be defined in c++23" # endif @@ -4218,6 +4470,14 @@ # error "__cpp_lib_forward_like should have the value 202207L in c++23" # endif +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined before c++26" +# endif + +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined before c++26" +# endif + # ifndef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should be defined in c++23" # endif @@ -4259,6 +4519,10 @@ # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++23" # endif +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined before c++26" +# endif + # ifndef __cpp_lib_hypot # error "__cpp_lib_hypot should be defined in c++23" # endif @@ -4732,6 +4996,10 @@ # endif # endif +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined before c++26" +# endif + # ifndef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should be defined in c++23" # endif @@ -4739,6 +5007,10 @@ # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++23" # endif +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should be defined in c++23" @@ -4860,6 +5132,10 @@ # endif # endif +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26" +# endif + # if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403) # ifndef __cpp_lib_source_location # error "__cpp_lib_source_location should be defined in c++23" @@ -4900,6 +5176,10 @@ # error "__cpp_lib_ssize should have the value 201902L in c++23" # endif +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should be defined in c++23" @@ -4955,6 +5235,10 @@ # error "__cpp_lib_string_view should have the value 201803L in c++23" # endif +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should be defined in c++23" @@ -4968,6 +5252,10 @@ # endif # endif +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined before c++26" +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++23" @@ -5008,6 +5296,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_to_string +# error "__cpp_lib_to_string should be defined in c++23" +# endif +# if __cpp_lib_to_string != 202306L +# error "__cpp_lib_to_string should have the value 202306L in c++23" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should be defined in c++23" # endif @@ -5099,6 +5400,10 @@ # error "__cpp_lib_void_t should have the value 201411L in c++23" # endif +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined before c++26" +# endif + #elif TEST_STD_VER > 23 # ifndef __cpp_lib_adaptor_iterator_pair_constructor @@ -5170,6 +5475,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26" +# endif +# if __cpp_lib_associative_heterogeneous_insertion != 202306L +# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_associative_heterogeneous_insertion +# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_assume_aligned # error "__cpp_lib_assume_aligned should be defined in c++26" # endif @@ -5274,8 +5592,8 @@ # ifndef __cpp_lib_bind_back # error "__cpp_lib_bind_back should be defined in c++26" # endif -# if __cpp_lib_bind_back != 202202L -# error "__cpp_lib_bind_back should have the value 202202L in c++26" +# if __cpp_lib_bind_back != 202306L +# error "__cpp_lib_bind_back should have the value 202306L in c++26" # endif # else // _LIBCPP_VERSION # ifdef __cpp_lib_bind_back @@ -5286,8 +5604,8 @@ # ifndef __cpp_lib_bind_front # error "__cpp_lib_bind_front should be defined in c++26" # endif -# if __cpp_lib_bind_front != 201907L -# error "__cpp_lib_bind_front should have the value 201907L in c++26" +# if __cpp_lib_bind_front != 202306L +# error "__cpp_lib_bind_front should have the value 202306L in c++26" # endif # ifndef __cpp_lib_bit_cast @@ -5310,6 +5628,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_bitset +# error "__cpp_lib_bitset should be defined in c++26" +# endif +# if __cpp_lib_bitset != 202306L +# error "__cpp_lib_bitset should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_bitset +# error "__cpp_lib_bitset should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_bool_constant # error "__cpp_lib_bool_constant should be defined in c++26" # endif @@ -5511,6 +5842,19 @@ # error "__cpp_lib_constexpr_vector should have the value 201907L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should be defined in c++26" +# endif +# if __cpp_lib_copyable_function != 202306L +# error "__cpp_lib_copyable_function should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_copyable_function +# error "__cpp_lib_copyable_function should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_coroutine # error "__cpp_lib_coroutine should be defined in c++26" # endif @@ -5632,6 +5976,32 @@ # error "__cpp_lib_forward_like should have the value 202207L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should be defined in c++26" +# endif +# if __cpp_lib_fstream_native_handle != 202306L +# error "__cpp_lib_fstream_native_handle should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_fstream_native_handle +# error "__cpp_lib_fstream_native_handle should not be defined because it is unimplemented in libc++!" +# endif +# endif + +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should be defined in c++26" +# endif +# if __cpp_lib_function_ref != 202606L +# error "__cpp_lib_function_ref should have the value 202606L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_function_ref +# error "__cpp_lib_function_ref should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_gcd_lcm # error "__cpp_lib_gcd_lcm should be defined in c++26" # endif @@ -5673,6 +6043,19 @@ # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should be defined in c++26" +# endif +# if __cpp_lib_hazard_pointer != 202306L +# error "__cpp_lib_hazard_pointer should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_hazard_pointer +# error "__cpp_lib_hazard_pointer should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_hypot # error "__cpp_lib_hypot should be defined in c++26" # endif @@ -6146,6 +6529,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_ratio +# error "__cpp_lib_ratio should be defined in c++26" +# endif +# if __cpp_lib_ratio != 202306L +# error "__cpp_lib_ratio should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_ratio +# error "__cpp_lib_ratio should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_raw_memory_algorithms # error "__cpp_lib_raw_memory_algorithms should be defined in c++26" # endif @@ -6153,6 +6549,19 @@ # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_rcu +# error "__cpp_lib_rcu should be defined in c++26" +# endif +# if __cpp_lib_rcu != 202306L +# error "__cpp_lib_rcu should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_rcu +# error "__cpp_lib_rcu should not be defined because it is unimplemented in libc++!" +# endif +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_reference_from_temporary # error "__cpp_lib_reference_from_temporary should be defined in c++26" @@ -6274,6 +6683,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should be defined in c++26" +# endif +# if __cpp_lib_smart_ptr_owner_equality != 202306L +# error "__cpp_lib_smart_ptr_owner_equality should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_smart_ptr_owner_equality +# error "__cpp_lib_smart_ptr_owner_equality should not be defined because it is unimplemented in libc++!" +# endif +# endif + # if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403) # ifndef __cpp_lib_source_location # error "__cpp_lib_source_location should be defined in c++26" @@ -6314,6 +6736,19 @@ # error "__cpp_lib_ssize should have the value 201902L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should be defined in c++26" +# endif +# if __cpp_lib_sstream_from_string_view != 202306L +# error "__cpp_lib_sstream_from_string_view should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_sstream_from_string_view +# error "__cpp_lib_sstream_from_string_view should not be defined because it is unimplemented in libc++!" +# endif +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_stacktrace # error "__cpp_lib_stacktrace should be defined in c++26" @@ -6369,6 +6804,19 @@ # error "__cpp_lib_string_view should have the value 201803L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should be defined in c++26" +# endif +# if __cpp_lib_submdspan != 202306L +# error "__cpp_lib_submdspan should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_submdspan +# error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!" +# endif +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_syncbuf # error "__cpp_lib_syncbuf should be defined in c++26" @@ -6382,6 +6830,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should be defined in c++26" +# endif +# if __cpp_lib_text_encoding != 202306L +# error "__cpp_lib_text_encoding should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_text_encoding +# error "__cpp_lib_text_encoding should not be defined because it is unimplemented in libc++!" +# endif +# endif + # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++26" @@ -6422,6 +6883,19 @@ # endif # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_to_string +# error "__cpp_lib_to_string should be defined in c++26" +# endif +# if __cpp_lib_to_string != 202306L +# error "__cpp_lib_to_string should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_to_string +# error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" +# endif +# endif + # ifndef __cpp_lib_to_underlying # error "__cpp_lib_to_underlying should be defined in c++26" # endif @@ -6513,5 +6987,18 @@ # error "__cpp_lib_void_t should have the value 201411L in c++26" # endif +# if !defined(_LIBCPP_VERSION) +# ifndef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should be defined in c++26" +# endif +# if __cpp_lib_within_lifetime != 202306L +# error "__cpp_lib_within_lifetime should have the value 202306L in c++26" +# endif +# else // _LIBCPP_VERSION +# ifdef __cpp_lib_within_lifetime +# error "__cpp_lib_within_lifetime should not be defined because it is unimplemented in libc++!" +# endif +# endif + #endif // TEST_STD_VER > 23 diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -87,7 +87,11 @@ }, { "name": "__cpp_lib_allocate_at_least", - "values": {"c++23": 202106}, + "values": { + "c++23": 202106, + # Note LWG3887 Version macro for allocate_at_least + #"c++26": 202302, # P2652R2 Disallow User Specialization of allocator_traits + }, "headers": ["memory"], }, { @@ -133,6 +137,12 @@ "headers": ["map", "set", "unordered_map", "unordered_set"], "unimplemented": True, }, + { + "name": "__cpp_lib_associative_heterogeneous_insertion", + "values": {"c++26": 202306}, # P2363R5 Extending associative containers with the remaining heterogeneous overloads + "headers": ["map", "set", "unordered_map", "unordered_set"], + "unimplemented": True, + }, { "name": "__cpp_lib_assume_aligned", "values": {"c++20": 201811}, @@ -192,13 +202,19 @@ }, { "name": "__cpp_lib_bind_back", - "values": {"c++23": 202202}, + "values": { + "c++23": 202202, + "c++26": 202306, # P2714R1 Bind front and back to NTTP callables + }, "headers": ["functional"], "unimplemented": True, }, { "name": "__cpp_lib_bind_front", - "values": {"c++20": 201907}, + "values": { + "c++20": 201907, + "c++26": 202306, # P2714R1 Bind front and back to NTTP callables + }, "headers": ["functional"], }, { @@ -212,6 +228,12 @@ "headers": ["bit"], "unimplemented": True, }, + { + "name": "__cpp_lib_bitset", + "values": {"c++26": 202306}, # P2697R1 Interfacing bitset with string_view + "headers": ["bitset"], + "unimplemented": True, + }, { "name": "__cpp_lib_bool_constant", "values": {"c++17": 201505}, @@ -255,7 +277,10 @@ }, { "name": "__cpp_lib_chrono", - "values": {"c++17": 201611}, + "values": { + "c++17": 201611, + #"c++26": 202306, # P2592R3 Hashing support for std::chrono value classes + }, "headers": ["chrono"], }, { @@ -280,7 +305,10 @@ }, { "name": "__cpp_lib_constexpr_algorithms", - "values": {"c++20": 201806}, + "values": { + "c++20": 201806, + #"c++26": 202306, # P2562R1 constexpr Stable Sorting + }, "headers": ["algorithm", "utility"], }, { @@ -359,6 +387,12 @@ "values": {"c++20": 201907}, "headers": ["vector"], }, + { + "name": "__cpp_lib_copyable_function", + "values": {"c++26": 202306}, # P2548R6 copyable_function + "headers": ["functional"], + "unimplemented": True, + }, { "name": "__cpp_lib_coroutine", "values": {"c++20": 201902}, @@ -428,6 +462,10 @@ "c++20": 202106, # "c++23": 202207, Not implemented P2419R2 Clarify handling of encodings in localized formatting of chrono types }, + # Note these three papers are adopted at the June 2023 meeting and have sequential numbering + # 202304 P2510R3 Formatting pointers + # 202305 P2757R3 Type-checking format args + # 202306 P2637R3 Member Visit "headers": ["format"], "unimplemented": True, }, @@ -447,6 +485,18 @@ "values": {"c++23": 202207}, "headers": ["utility"], }, + { + "name": "__cpp_lib_fstream_native_handle", + "values": {"c++26": 202306}, # P1759R6 Native handles and file streams + "headers": ["fstream"], + "unimplemented": True, + }, + { + "name": "__cpp_lib_function_ref", + "values": {"c++26": 202606}, # P0792R14 function_ref: a type-erased callable reference + "headers": ["functional"], + "unimplemented": True, + }, { "name": "__cpp_lib_gcd_lcm", "values": {"c++17": 201606}, @@ -474,6 +524,12 @@ "values": {"c++17": 201606}, "headers": ["type_traits"], }, + { + "name": "__cpp_lib_hazard_pointer", + "values": {"c++26": 202306}, # P2530R3 Hazard Pointers for C++26 + "headers": ["hazard_pointer"],# TODO verify this entry since the paper was underspecified. + "unimplemented": True, + }, { "name": "__cpp_lib_hypot", "values": {"c++17": 201603}, @@ -679,7 +735,10 @@ }, { "name": "__cpp_lib_not_fn", - "values": {"c++17": 201603}, + "values": { + "c++17": 201603, + #"c++26": 202306, # P2714R1 Bind front and back to NTTP callables + }, "headers": ["functional"], }, { @@ -785,11 +844,23 @@ "headers": ["ranges", "tuple", "utility"], "unimplemented": True, }, + { + "name": "__cpp_lib_ratio", + "values": {"c++26": 202306}, # P2734R0 Adding the new SI prefixes + "headers": ["ratio"], + "unimplemented": True, + }, { "name": "__cpp_lib_raw_memory_algorithms", "values": {"c++17": 201606}, "headers": ["memory"], }, + { + "name": "__cpp_lib_rcu", + "values": {"c++26": 202306}, # P2545R4 Read-Copy Update (RCU) + "headers": ["rcu"], # TODO verify this entry since the paper was underspecified. + "unimplemented": True, + }, { "name": "__cpp_lib_reference_from_temporary", "values": {"c++23": 202202}, @@ -863,6 +934,12 @@ "headers": ["memory"], "unimplemented": True, }, + { + "name": "__cpp_lib_smart_ptr_owner_equality", + "values": {"c++26": 202306}, # P1901R2 Enabling the Use of weak_ptr as Keys in Unordered Associative Containers + "headers": ["memory"], + "unimplemented": True, + }, { "name": "__cpp_lib_source_location", "values": {"c++20": 201907}, @@ -886,6 +963,12 @@ "values": {"c++20": 201902}, "headers": ["iterator"], }, + { + "name": "__cpp_lib_sstream_from_string_view", + "values": {"c++26": 202306}, # P2495R3 Interfacing stringstreams with string_view + "headers": ["sstream"], + "unimplemented": True, + }, { "name": "__cpp_lib_stacktrace", "values": {"c++23": 202011}, @@ -922,12 +1005,24 @@ "values": {"c++17": 201606, "c++20": 201803}, "headers": ["string", "string_view"], }, + { + "name": "__cpp_lib_submdspan", + "values": {"c++26": 202306}, # P2630R4 submdspan + "headers": ["mdspan"], + "unimplemented": True, + }, { "name": "__cpp_lib_syncbuf", "values": {"c++20": 201803}, "headers": ["syncstream"], "unimplemented": True, }, + { + "name": "__cpp_lib_text_encoding", + "values": {"c++26": 202306}, # P1885R12 Naming Text Encodings to Demystify Them + "headers": ["text_encoding"], + "unimplemented": True, + }, { "name": "__cpp_lib_three_way_comparison", "values": {"c++20": 201907}, @@ -946,10 +1041,19 @@ }, { "name": "__cpp_lib_to_chars", - "values": {"c++17": 201611}, + "values": { + "c++17": 201611, + #"c++26: 202306, # P2497R0 Testing for success or failure of functions + }, "headers": ["charconv"], "unimplemented": True, }, + { + "name": "__cpp_lib_to_string", + "values": {"c++23": 202306}, # P2587R3 to_string or not to_string + "headers": ["string"], + "unimplemented": True, + }, { "name": "__cpp_lib_to_underlying", "values": {"c++23": 202102}, @@ -1015,6 +1119,12 @@ "values": {"c++17": 201411}, "headers": ["type_traits"], }, + { + "name": "__cpp_lib_within_lifetime", + "values": {"c++26": 202306}, # P2641R4 Checking if a union alternative is active + "headers": ["type_traits"], + "unimplemented": True, + }, ] ] @@ -1048,6 +1158,7 @@ lit_markup = { "barrier": ["UNSUPPORTED: no-threads"], "filesystem": ["UNSUPPORTED: no-filesystem"], + "fstream": ["UNSUPPORTED: no-localization"], "iomanip": ["UNSUPPORTED: no-localization"], "ios": ["UNSUPPORTED: no-localization"], "iostream": ["UNSUPPORTED: no-localization"], @@ -1059,6 +1170,7 @@ "regex": ["UNSUPPORTED: no-localization"], "semaphore": ["UNSUPPORTED: no-threads"], "shared_mutex": ["UNSUPPORTED: no-threads"], + "sstream": ["UNSUPPORTED: no-localization"], "stdatomic.h": ["UNSUPPORTED: no-threads"], "stop_token": ["UNSUPPORTED: no-threads"], "thread": ["UNSUPPORTED: no-threads"],