Feature Test Macro Support

Overview

This file documents the feature test macros currently supported by libc++.

Status

Current Status

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

201806L

__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

202110L

__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_optional

202106L

__cpp_lib_polymorphic_allocator

201902L

__cpp_lib_ranges

202110L

__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

202002L

__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

201907L

__cpp_lib_to_address

201711L

__cpp_lib_to_array

201907L

__cpp_lib_type_identity

201806L

__cpp_lib_unwrap_ref

201811L

__cpp_lib_variant

202106L

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_ranges

202207L

__cpp_lib_formatters

unimplemented

__cpp_lib_forward_like

202207L

__cpp_lib_invoke_r

202106L

__cpp_lib_ios_noreplace

202207L

__cpp_lib_is_implicit_lifetime

202302L

__cpp_lib_is_scoped_enum

202011L

__cpp_lib_mdspan

202207L

__cpp_lib_modules

202207L

__cpp_lib_move_only_function

unimplemented

__cpp_lib_optional

202110L

__cpp_lib_out_ptr

202106L

__cpp_lib_print

202207L

__cpp_lib_ranges

202406L

__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_find_last

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_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_constexpr_new

202406L

__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_format_path

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_inplace_vector

unimplemented

__cpp_lib_is_virtual_base_of

202406L

__cpp_lib_is_within_lifetime

unimplemented

__cpp_lib_linalg

unimplemented

__cpp_lib_mdspan

202406L

__cpp_lib_optional_range_support

unimplemented

__cpp_lib_out_ptr

202311L

__cpp_lib_philox_engine

unimplemented

__cpp_lib_ranges_concat

unimplemented

__cpp_lib_ratio

202306L

__cpp_lib_rcu

unimplemented

__cpp_lib_reference_wrapper

202403L

__cpp_lib_saturation_arithmetic

202311L

__cpp_lib_senders

unimplemented

__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_string_view

202403L

__cpp_lib_submdspan

unimplemented

__cpp_lib_text_encoding

unimplemented

__cpp_lib_to_chars

unimplemented

__cpp_lib_to_string

unimplemented

__cpp_lib_tuple_like

unimplemented

__cpp_lib_variant

202306L