Each of following macros is defined if the header <version>
or one of the corresponding headers specified in the table is included.
Macro name | Value | Header |
---|---|---|
__cpp_lib_addressof_constexpr | 201603L | <memory> |
__cpp_lib_algorithm_iterator_requirements | 202207L | <algorithm> <numeric> <memory> |
__cpp_lib_allocate_at_least | 202302L | <memory> |
__cpp_lib_allocator_traits_is_always_equal | 201411L | <memory> <scoped_allocator> <string> <deque> <forward_list> <list> <vector> <map> <set> <unordered_map> <unordered_set> |
__cpp_lib_adaptor_iterator_pair_constructor | 202106L | <stack> <queue> |
__cpp_lib_any | 201606L | <any> |
__cpp_lib_apply | 201603L | <tuple> |
__cpp_lib_array_constexpr | 201811L | <iterator> <array> |
__cpp_lib_as_const | 201510L | <utility> |
__cpp_lib_associative_heterogeneous_erasure | 202110L | <map> <set> <unordered_map> <unordered_set> |
__cpp_lib_assume_aligned | 201811L | <memory> |
__cpp_lib_atomic_flag_test | 201907L | <atomic> |
__cpp_lib_atomic_float | 201711L | <atomic> |
__cpp_lib_atomic_is_always_lock_free | 201603L | <atomic> |
__cpp_lib_atomic_lock_free_type_aliases | 201907L | <atomic> |
__cpp_lib_atomic_ref | 201806L | <atomic> |
__cpp_lib_atomic_shared_ptr | 201711L | <memory> |
__cpp_lib_atomic_value_initialization | 201911L | <atomic> <memory> |
__cpp_lib_atomic_wait | 201907L | <atomic> |
__cpp_lib_barrier | 202302L | <barrier> |
__cpp_lib_bind_back | 202202L | <functional> |
__cpp_lib_bind_front | 201907L | <functional> |
__cpp_lib_bit_cast | 201806L | <bit> |
__cpp_lib_bitops | 201907L | <bit> |
__cpp_lib_bool_constant | 201505L | <type_traits> |
__cpp_lib_bounded_array_traits | 201902L | <type_traits> |
__cpp_lib_boyer_moore_searcher | 201603L | <functional> |
__cpp_lib_byte | 201603L | <cstddef> |
__cpp_lib_byteswap | 202110L | <bit> |
__cpp_lib_char8_t | 201907L | <atomic> <filesystem> <istream> <limits> <locale> <ostream> <string> <string_view> |
__cpp_lib_chrono | 201907L | <chrono> |
__cpp_lib_chrono_udls | 201304L | <chrono> |
__cpp_lib_clamp | 201603L | <algorithm> |
__cpp_lib_common_reference | 202302L | <type_traits> |
__cpp_lib_common_reference_wrapper | 202302L | <functional> |
__cpp_lib_complex_udls | 201309L | <complex> |
__cpp_lib_concepts | 202207L | <concepts> <compare> |
__cpp_lib_constexpr_algorithms | 201806L | <algorithm> <utility> |
__cpp_lib_constexpr_bitset | 202207L | <bitset> |
__cpp_lib_constexpr_charconv | 202207L | <charconv> |
__cpp_lib_constexpr_cmath | 202202L | <cmath> <cstdlib> |
__cpp_lib_constexpr_complex | 201711L | <complex> |
__cpp_lib_constexpr_dynamic_alloc | 201907L | <memory> |
__cpp_lib_constexpr_functional | 201907L | <functional> |
__cpp_lib_constexpr_iterator | 201811L | <iterator> |
__cpp_lib_constexpr_memory | 202202L | <memory> |
__cpp_lib_constexpr_numeric | 201911L | <numeric> |
__cpp_lib_constexpr_string | 201907L | <string> |
__cpp_lib_constexpr_string_view | 201811L | <string_view> |
__cpp_lib_constexpr_tuple | 201811L | <tuple> |
__cpp_lib_constexpr_typeinfo | 202106L | <typeinfo> |
__cpp_lib_constexpr_utility | 201811L | <utility> |
__cpp_lib_constexpr_vector | 201907L | <vector> |
__cpp_lib_containers_ranges | 202202L | <vector> <list> <forward_list> <map> <set> <unordered_map> <unordered_set> <deque> <queue> <stack> <string> |
__cpp_lib_coroutine | 201902L | <coroutine> |
__cpp_lib_destroying_delete | 201806L | <new> |
__cpp_lib_enable_shared_from_this | 201603L | <memory> |
__cpp_lib_endian | 201907L | <bit> |
__cpp_lib_erase_if | 202002L | <string> <deque> <forward_list> <list> <vector> <map> <set> <unordered_map> <unordered_set> |
__cpp_lib_exchange_function | 201304L | <utility> |
__cpp_lib_execution | 201902L | <execution> |
__cpp_lib_expected | 202211L | <expected> |
__cpp_lib_filesystem | 201703L | <filesystem> |
__cpp_lib_flat_map | 202207L | <flat_map> |
__cpp_lib_flat_set | 202207L | <flat_set> |
__cpp_lib_format | 202207L | <format> |
__cpp_lib_format_ranges | 202207L | <format> |
__cpp_lib_formatters | 202302L | <stacktrace> <thread> |
__cpp_lib_forward_like | 202207L | <utility> |
__cpp_lib_gcd_lcm | 201606L | <numeric> |
__cpp_lib_generator | 202207L | <generator> |
__cpp_lib_generic_associative_lookup | 201304L | <map> <set> |
__cpp_lib_generic_unordered_lookup | 201811L | <unordered_map> <unordered_set> |
__cpp_lib_hardware_interference_size | 201703L | <new> |
__cpp_lib_has_unique_object_representations | 201606L | <type_traits> |
__cpp_lib_hypot | 201603L | <cmath> |
__cpp_lib_incomplete_container_elements | 201505L | <forward_list> <list> <vector> |
__cpp_lib_int_pow2 | 202002L | <bit> |
__cpp_lib_integer_comparison_functions | 202002L | <utility> |
__cpp_lib_integer_sequence | 201304L | <utility> |
__cpp_lib_integral_constant_callable | 201304L | <type_traits> |
__cpp_lib_interpolate | 201902L | <cmath> <numeric> |
__cpp_lib_invoke | 201411L | <functional> |
__cpp_lib_invoke_r | 202106L | <functional> |
__cpp_lib_ios_noreplace | 202207L | <ios> |
__cpp_lib_is_aggregate | 201703L | <type_traits> |
__cpp_lib_is_constant_evaluated | 201811L | <type_traits> |
__cpp_lib_is_final | 201402L | <type_traits> |
__cpp_lib_is_implicit_lifetime | 202302L | <type_traits> |
__cpp_lib_is_invocable | 201703L | <type_traits> |
__cpp_lib_is_layout_compatible | 201907L | <type_traits> |
__cpp_lib_is_nothrow_convertible | 201806L | <type_traits> |
__cpp_lib_is_null_pointer | 201309L | <type_traits> |
__cpp_lib_is_pointer_interconvertible | 201907L | <type_traits> |
__cpp_lib_is_scoped_enum | 202011L | <type_traits> |
__cpp_lib_is_swappable | 201603L | <type_traits> |
__cpp_lib_jthread | 201911L | <stop_token> <thread> |
__cpp_lib_latch | 201907L | <latch> |
__cpp_lib_launder | 201606L | <new> |
__cpp_lib_list_remove_return_type | 201806L | <forward_list> <list> |
__cpp_lib_logical_traits | 201510L | <type_traits> |
__cpp_lib_make_from_tuple | 201606L | <tuple> |
__cpp_lib_make_reverse_iterator | 201402L | <iterator> |
__cpp_lib_make_unique | 201304L | <memory> |
__cpp_lib_map_try_emplace | 201411L | <map> |
__cpp_lib_math_constants | 201907L | <numbers> |
__cpp_lib_math_special_functions | 201603L | <cmath> |
__cpp_lib_mdspan | 202207L | <mdspan> |
__cpp_lib_memory_resource | 201603L | <memory_resource> |
__cpp_lib_modules | 202207L | |
__cpp_lib_move_iterator_concept | 202207L | <iterator> |
__cpp_lib_move_only_function | 202110L | <functional> |
__cpp_lib_node_extract | 201606L | <map> <set> <unordered_map> <unordered_set> |
__cpp_lib_nonmember_container_access | 201411L | <array> <deque> <forward_list> <iterator> <list> <map> <regex> <set> <string> <unordered_map> <unordered_set> <vector> |
__cpp_lib_not_fn | 201603L | <functional> |
__cpp_lib_null_iterators | 201304L | <iterator> |
__cpp_lib_optional | 202110L | <optional> |
__cpp_lib_out_ptr | 202106L | <memory> |
__cpp_lib_parallel_algorithm | 201603L | <algorithm> <numeric> |
__cpp_lib_polymorphic_allocator | 201902L | <memory_resource> |
__cpp_lib_print | 202207L | <print> <ostream> |
__cpp_lib_quoted_string_io | 201304L | <iomanip> |
__cpp_lib_ranges | 202302L | <algorithm> <functional> <iterator> <memory> <ranges> |
__cpp_lib_ranges_as_const | 202207L | <ranges> |
__cpp_lib_ranges_as_rvalue | 202207L | <ranges> |
__cpp_lib_ranges_cartesian_product | 202207L | <ranges> |
__cpp_lib_ranges_chunk | 202202L | <ranges> |
__cpp_lib_ranges_chunk_by | 202202L | <ranges> |
__cpp_lib_ranges_contains | 202207L | <algorithm> |
__cpp_lib_ranges_enumerate | 202302L | <ranges> |
__cpp_lib_ranges_find_last | 202207L | <algorithm> |
__cpp_lib_ranges_fold | 202207L | <algorithm> |
__cpp_lib_ranges_iota | 202202L | <numeric> |
__cpp_lib_ranges_join_with | 202202L | <ranges> |
__cpp_lib_ranges_repeat | 202207L | <ranges> |
__cpp_lib_ranges_slide | 202202L | <ranges> |
__cpp_lib_ranges_starts_ends_with | 202106L | <algorithm> |
__cpp_lib_ranges_stride | 202207L | <ranges> |
__cpp_lib_ranges_to_container | 202202L | <ranges> |
__cpp_lib_ranges_zip | 202110L | <ranges> <tuple> <utility> |
__cpp_lib_raw_memory_algorithms | 201606L | <memory> |
__cpp_lib_reference_from_temporary | 202202L | <type_traits> |
__cpp_lib_remove_cvref | 201711L | <type_traits> |
__cpp_lib_result_of_sfinae | 201210L | <functional> <type_traits> |
__cpp_lib_robust_nonmodifying_seq_ops | 201304L | <algorithm> |
__cpp_lib_sample | 201603L | <algorithm> |
__cpp_lib_scoped_lock | 201703L | <mutex> |
__cpp_lib_semaphore | 201907L | <semaphore> |
__cpp_lib_shared_mutex | 201505L | <shared_mutex> |
__cpp_lib_shared_ptr_arrays | 201707L | <memory> |
__cpp_lib_shared_ptr_weak_type | 201606L | <memory> |
__cpp_lib_shared_timed_mutex | 201402L | <shared_mutex> |
__cpp_lib_shift | 202202L | <algorithm> |
__cpp_lib_smart_ptr_for_overwrite | 202002L | <memory> |
__cpp_lib_source_location | 201907L | <source_location> |
__cpp_lib_span | 202002L | <span> |
__cpp_lib_spanstream | 202106L | <spanstream> |
__cpp_lib_ssize | 201902L | <iterator> |
__cpp_lib_stacktrace | 202011L | <stacktrace> |
__cpp_lib_start_lifetime_as | 202207L | <memory> |
__cpp_lib_starts_ends_with | 201711L | <string> <string_view> |
__cpp_lib_stdatomic_h | 202011L | <stdatomic.h> |
__cpp_lib_string_contains | 202011L | <string> <string_view> |
__cpp_lib_string_resize_and_overwrite | 202110L | <string> |
__cpp_lib_string_udls | 201304L | <string> |
__cpp_lib_string_view | 201803L | <string> <string_view> |
__cpp_lib_syncbuf | 201803L | <syncstream> |
__cpp_lib_three_way_comparison | 201907L | <compare> |
__cpp_lib_to_address | 201711L | <memory> |
__cpp_lib_to_array | 201907L | <array> |
__cpp_lib_to_chars | 201611L | <charconv> |
__cpp_lib_to_underlying | 202102L | <utility> |
__cpp_lib_transformation_trait_aliases | 201304L | <type_traits> |
__cpp_lib_transparent_operators | 201510L | <memory> <functional> |
__cpp_lib_tuple_like | 202207L | <utility> <tuple> <map> <unordered_map> |
__cpp_lib_tuple_element_t | 201402L | <tuple> |
__cpp_lib_tuples_by_type | 201304L | <utility> <tuple> |
__cpp_lib_type_identity | 201806L | <type_traits> |
__cpp_lib_type_trait_variable_templates | 201510L | <type_traits> |
__cpp_lib_uncaught_exceptions | 201411L | <exception> |
__cpp_lib_unordered_map_try_emplace | 201411L | <unordered_map> |
__cpp_lib_unreachable | 202202L | <utility> |
__cpp_lib_unwrap_ref | 201811L | <type_traits> |
__cpp_lib_variant | 202106L | <variant> |
__cpp_lib_void_t | 201411L | <type_traits> |
Total number of macros: 185 |
Each value in "Value" column follows the pattern: "yyyymmL"
, where "yyyy"
is a year, and "mm"
is a month when the corresponding feature-set was accepted for standardization. Some values where increased since the time of their introduction, if capabilities of given feature where extended. The table above contains only the most recent values (that is, taken from the latest C++ language draft standard). A full set of values, including the initial and intermediate ones, can be found in this table.
Feature testing (C++20) | A set of preprocessor macros to test the corresponding to C++ language and library features |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/feature_test