Difference between revisions of "cpp/utility/feature test"
From cppreference.com
m (Add macros counter to the table's footer instead of an external string.) |
m (N4944/eel.is +5 more macros, +new dates) |
||
Line 19: | Line 19: | ||
|- | |- | ||
| {{tt|__cpp_lib_allocate_at_least}} | | {{tt|__cpp_lib_allocate_at_least}} | ||
− | | | + | | 202302L |
| {{header|memory}} | | {{header|memory}} | ||
|- | |- | ||
Line 87: | Line 87: | ||
|- | |- | ||
| {{tt|__cpp_lib_barrier}} | | {{tt|__cpp_lib_barrier}} | ||
− | | | + | | 202302L |
| {{header|barrier}} | | {{header|barrier}} | ||
|- | |- | ||
Line 141: | Line 141: | ||
| 201603L | | 201603L | ||
| {{header|algorithm}} | | {{header|algorithm}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_common_reference}} | ||
+ | | 202302L | ||
+ | | {{header|type_traits}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_common_reference_wrapper}} | ||
+ | | 202302L | ||
+ | | {{header|functional}} | ||
|- | |- | ||
| {{tt|__cpp_lib_complex_udls}} | | {{tt|__cpp_lib_complex_udls}} | ||
Line 253: | Line 261: | ||
| 201703L | | 201703L | ||
| {{header|filesystem}} | | {{header|filesystem}} | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| {{tt|__cpp_lib_flat_map}} | | {{tt|__cpp_lib_flat_map}} | ||
Line 273: | Line 277: | ||
| 202207L | | 202207L | ||
| {{header|format}} | | {{header|format}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_formatters}} | ||
+ | | 202302L | ||
+ | | {{header|stacktrace}} {{header|thread}} | ||
|- | |- | ||
| {{tt|__cpp_lib_forward_like}} | | {{tt|__cpp_lib_forward_like}} | ||
Line 352: | Line 360: | ||
| {{tt|__cpp_lib_is_final}} | | {{tt|__cpp_lib_is_final}} | ||
| 201402L | | 201402L | ||
+ | | {{header|type_traits}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_is_implicit_lifetime}} | ||
+ | | 202302L | ||
| {{header|type_traits}} | | {{header|type_traits}} | ||
|- | |- | ||
Line 483: | Line 495: | ||
|- | |- | ||
| {{tt|__cpp_lib_ranges}} | | {{tt|__cpp_lib_ranges}} | ||
− | | | + | | 202302L |
| {{header|algorithm}} {{header|functional}} {{header|iterator}} {{header|memory}} {{header|ranges}} | | {{header|algorithm}} {{header|functional}} {{header|iterator}} {{header|memory}} {{header|ranges}} | ||
|- | |- | ||
Line 507: | Line 519: | ||
|- | |- | ||
| {{tt|__cpp_lib_ranges_contains}} | | {{tt|__cpp_lib_ranges_contains}} | ||
+ | | 202207L | ||
+ | | {{header|algorithm}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_ranges_enumerate}} | ||
+ | | 202302L | ||
+ | | {{header|ranges}} {{header|version}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_ranges_find_last}} | ||
| 202207L | | 202207L | ||
| {{header|algorithm}} | | {{header|algorithm}} | ||
Line 726: | Line 746: | ||
| {{header|type_traits}} | | {{header|type_traits}} | ||
|- | |- | ||
− | ! colspan="3" | Total number of macros: | + | ! colspan="3" | Total number of macros: 184 |
|} | |} | ||
− | |||
===Notes=== | ===Notes=== | ||
Each value in "Value" column follows the pattern: {{c|"yyyymmL"}}, where {{c|"yyyy"}} is a year, and {{c|"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 [[cpp/feature_test#Library_features|this table]]. | Each value in "Value" column follows the pattern: {{c|"yyyymmL"}}, where {{c|"yyyy"}} is a year, and {{c|"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 [[cpp/feature_test#Library_features|this table]]. |
Revision as of 14:34, 4 April 2023
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_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> <version> |
__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: 184 |
Notes
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.
See also
Feature testing (C++20) | A set of preprocessor macros to test the corresponding to C++ language and library features |