blob: 1032a9c338f455b1c5a07abf6dac943dcb2e8117 [file] [log] [blame]
.. _FeatureTestMacroTable:
==========================
Feature Test Macro Support
==========================
.. contents::
:local:
Overview
========
This file documents the feature test macros currently supported by libc++.
.. _feature-status:
Status
======
.. table:: Current Status
:name: feature-status-table
:widths: auto
========================================================== =================
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``
---------------------------------------------------------- -----------------
**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``
---------------------------------------------------------- -----------------
**C++20**
----------------------------------------------------------------------------
``__cpp_lib_array_constexpr`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_assume_aligned`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_flag_test`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_float`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_ref`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_shared_ptr`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_value_initialization`` ``201911L``
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_wait`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_barrier`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_bind_front`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_bit_cast`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_bitops`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_bounded_array_traits`` ``201902L``
---------------------------------------------------------- -----------------
``__cpp_lib_char8_t`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_concepts`` ``202002L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_algorithms`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_complex`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_dynamic_alloc`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_functional`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_iterator`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_memory`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_numeric`` ``201911L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_string`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_string_view`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_tuple`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_utility`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_constexpr_vector`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_coroutine`` ``201902L``
---------------------------------------------------------- -----------------
``__cpp_lib_destroying_delete`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_endian`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_erase_if`` ``202002L``
---------------------------------------------------------- -----------------
``__cpp_lib_execution`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_format`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_format_uchar`` ``202311L``
---------------------------------------------------------- -----------------
``__cpp_lib_generic_unordered_lookup`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_int_pow2`` ``202002L``
---------------------------------------------------------- -----------------
``__cpp_lib_integer_comparison_functions`` ``202002L``
---------------------------------------------------------- -----------------
``__cpp_lib_interpolate`` ``201902L``
---------------------------------------------------------- -----------------
``__cpp_lib_is_constant_evaluated`` ``201811L``
---------------------------------------------------------- -----------------
``__cpp_lib_is_layout_compatible`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_is_nothrow_convertible`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_is_pointer_interconvertible`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_jthread`` ``201911L``
---------------------------------------------------------- -----------------
``__cpp_lib_latch`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_list_remove_return_type`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_math_constants`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_move_iterator_concept`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_polymorphic_allocator`` ``201902L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_remove_cvref`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_semaphore`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_shared_ptr_arrays`` ``201707L``
---------------------------------------------------------- -----------------
``__cpp_lib_shift`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_source_location`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_span`` ``202002L``
---------------------------------------------------------- -----------------
``__cpp_lib_ssize`` ``201902L``
---------------------------------------------------------- -----------------
``__cpp_lib_starts_ends_with`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_string_view`` ``201803L``
---------------------------------------------------------- -----------------
``__cpp_lib_syncbuf`` ``201803L``
---------------------------------------------------------- -----------------
``__cpp_lib_three_way_comparison`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_to_address`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_to_array`` ``201907L``
---------------------------------------------------------- -----------------
``__cpp_lib_type_identity`` ``201806L``
---------------------------------------------------------- -----------------
``__cpp_lib_unwrap_ref`` ``201811L``
---------------------------------------------------------- -----------------
**C++23**
----------------------------------------------------------------------------
``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L``
---------------------------------------------------------- -----------------
``__cpp_lib_allocate_at_least`` ``202302L``
---------------------------------------------------------- -----------------
``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_bind_back`` ``202202L``
---------------------------------------------------------- -----------------
``__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_containers_ranges`` ``202202L``
---------------------------------------------------------- -----------------
``__cpp_lib_expected`` ``202211L``
---------------------------------------------------------- -----------------
``__cpp_lib_format_path`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_format_ranges`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_formatters`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_forward_like`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_invoke_r`` ``202106L``
---------------------------------------------------------- -----------------
``__cpp_lib_ios_noreplace`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_is_scoped_enum`` ``202011L``
---------------------------------------------------------- -----------------
``__cpp_lib_mdspan`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_move_only_function`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_optional`` ``202110L``
---------------------------------------------------------- -----------------
``__cpp_lib_out_ptr`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_print`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_const`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_rvalue`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_chunk`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_chunk_by`` ``202202L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_contains`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_iota`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_join_with`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_repeat`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_slide`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_starts_ends_with`` ``202106L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_to_container`` ``202202L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_zip`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_reference_from_temporary`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_spanstream`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_stacktrace`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_stdatomic_h`` ``202011L``
---------------------------------------------------------- -----------------
``__cpp_lib_string_contains`` ``202011L``
---------------------------------------------------------- -----------------
``__cpp_lib_string_resize_and_overwrite`` ``202110L``
---------------------------------------------------------- -----------------
``__cpp_lib_to_string`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_to_underlying`` ``202102L``
---------------------------------------------------------- -----------------
``__cpp_lib_tuple_like`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_unreachable`` ``202202L``
---------------------------------------------------------- -----------------
**C++26**
----------------------------------------------------------------------------
``__cpp_lib_associative_heterogeneous_insertion`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_min_max`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_bind_front`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_bitset`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_constrained_equality`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_copyable_function`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_debugging`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_default_template_type_for_algorithm_values`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_algorithm`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_array`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_cstring`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_expected`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_mdspan`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_optional`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_string_view`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_freestanding_variant`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_fstream_native_handle`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_function_ref`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_generate_random`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_hazard_pointer`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_linalg`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_out_ptr`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_concat`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ratio`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_rcu`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_reference_wrapper`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_saturation_arithmetic`` ``202311L``
---------------------------------------------------------- -----------------
``__cpp_lib_smart_ptr_owner_equality`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_span_at`` ``202311L``
---------------------------------------------------------- -----------------
``__cpp_lib_span_initializer_list`` ``202311L``
---------------------------------------------------------- -----------------
``__cpp_lib_sstream_from_string_view`` ``202306L``
---------------------------------------------------------- -----------------
``__cpp_lib_submdspan`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_text_encoding`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_to_chars`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_tuple_like`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_within_lifetime`` *unimplemented*
========================================================== =================