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

unimplemented

__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

unimplemented

__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

unimplemented

__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

unimplemented

__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

201811L

__cpp_lib_concepts

202002L

__cpp_lib_constexpr_algorithms

201806L

__cpp_lib_constexpr_complex

unimplemented

__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

201811L

__cpp_lib_constexpr_string_view

201811L

__cpp_lib_constexpr_tuple

201811L

__cpp_lib_constexpr_utility

201811L

__cpp_lib_constexpr_vector

unimplemented

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

unimplemented

__cpp_lib_ranges

unimplemented

__cpp_lib_remove_cvref

201711L

__cpp_lib_semaphore

201907L

__cpp_lib_shift

201806L

__cpp_lib_smart_ptr_for_overwrite

unimplemented

__cpp_lib_source_location

unimplemented

__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++ 2b

__cpp_lib_adaptor_iterator_pair_constructor

202106L

__cpp_lib_allocate_at_least

unimplemented

__cpp_lib_associative_heterogeneous_erasure

unimplemented

__cpp_lib_byteswap

202110L

__cpp_lib_constexpr_typeinfo

unimplemented

__cpp_lib_invoke_r

unimplemented

__cpp_lib_is_scoped_enum

202011L

__cpp_lib_monadic_optional

202110L

__cpp_lib_move_only_function

unimplemented

__cpp_lib_out_ptr

unimplemented

__cpp_lib_ranges_starts_ends_with

unimplemented

__cpp_lib_ranges_zip

unimplemented

__cpp_lib_spanstream

unimplemented

__cpp_lib_stacktrace

unimplemented

__cpp_lib_stdatomic_h

unimplemented

__cpp_lib_string_contains

202011L

__cpp_lib_string_resize_and_overwrite

202110L

__cpp_lib_to_underlying

202102L