Difference between revisions of "cpp/utility/feature test"
From cppreference.com
m (update; eel.is is a bit behind right now.) |
(202403L update.) |
||
Line 17: | Line 17: | ||
| 201603L | | 201603L | ||
| {{header|memory}} | | {{header|memory}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_algorithm_default_value_type}} | ||
+ | | 202403L | ||
+ | | {{header|algorithm}} {{header|ranges}} {{header|string}} {{header|deque}} {{header|list}} {{header|forward_list}} {{header|vector}} | ||
|- | |- | ||
| {{tt|__cpp_lib_algorithm_iterator_requirements}} | | {{tt|__cpp_lib_algorithm_iterator_requirements}} | ||
Line 72: | Line 76: | ||
| {{tt|__cpp_lib_atomic_lock_free_type_aliases}} | | {{tt|__cpp_lib_atomic_lock_free_type_aliases}} | ||
| 201907L | | 201907L | ||
+ | | {{header|atomic}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_atomic_min_max}} | ||
+ | | 202403L | ||
| {{header|atomic}} | | {{header|atomic}} | ||
|- | |- | ||
Line 229: | Line 237: | ||
| 201907L | | 201907L | ||
| {{header|vector}} | | {{header|vector}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_constrained_equality}} | ||
+ | | 202403L | ||
+ | | {{header|utility}} {{header|tuple}} {{header|optional}} {{header|variant}} | ||
|- | |- | ||
| {{tt|__cpp_lib_containers_ranges}} | | {{tt|__cpp_lib_containers_ranges}} | ||
Line 243: | Line 255: | ||
|- | |- | ||
| {{tt|__cpp_lib_debugging}} | | {{tt|__cpp_lib_debugging}} | ||
− | | | + | | 202403L |
| {{header|debugging}} | | {{header|debugging}} | ||
|- | |- | ||
Line 293: | Line 305: | ||
| 202207L | | 202207L | ||
| {{header|format}} | | {{header|format}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_format_path}} | ||
+ | | 202403L | ||
+ | | {{header|filesystem}} | ||
|- | |- | ||
| {{tt|__cpp_lib_format_uchar}} | | {{tt|__cpp_lib_format_uchar}} | ||
Line 619: | Line 635: | ||
|- | |- | ||
| {{tt|__cpp_lib_print}} | | {{tt|__cpp_lib_print}} | ||
− | | | + | | 202403L |
| {{header|print}} {{header|ostream}} | | {{header|print}} {{header|ostream}} | ||
|- | |- | ||
Line 648: | Line 664: | ||
| {{tt|__cpp_lib_ranges_chunk_by}} | | {{tt|__cpp_lib_ranges_chunk_by}} | ||
| 202202L | | 202202L | ||
+ | | {{header|ranges}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_ranges_concat}} | ||
+ | | 202403L | ||
| {{header|ranges}} | | {{header|ranges}} | ||
|- | |- | ||
Line 665: | Line 685: | ||
| 202207L | | 202207L | ||
| {{header|algorithm}} | | {{header|algorithm}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_ranges_generate_random}} | ||
+ | | 202403L | ||
+ | | {{header|random}} | ||
|- | |- | ||
| {{tt|__cpp_lib_ranges_iota}} | | {{tt|__cpp_lib_ranges_iota}} | ||
Line 713: | Line 737: | ||
| 202202L | | 202202L | ||
| {{header|type_traits}} | | {{header|type_traits}} | ||
+ | |- | ||
+ | | {{tt|__cpp_lib_reference_wrapper}} | ||
+ | | 202403L | ||
+ | | {{header|functional}} | ||
|- | |- | ||
| {{tt|__cpp_lib_remove_cvref}} | | {{tt|__cpp_lib_remove_cvref}} | ||
Line 823: | Line 851: | ||
|- | |- | ||
| {{tt|__cpp_lib_string_view}} | | {{tt|__cpp_lib_string_view}} | ||
− | | | + | | 202403L |
| {{header|string}} {{header|string_view}} | | {{header|string}} {{header|string_view}} | ||
|- | |- | ||
| {{tt|__cpp_lib_submdspan}} | | {{tt|__cpp_lib_submdspan}} | ||
− | | | + | | 202403L |
| {{header|mdspan}} | | {{header|mdspan}} | ||
|- | |- | ||
Line 914: | Line 942: | ||
| {{header|version}} | | {{header|version}} | ||
|- | |- | ||
− | ! colspan="3" | Total number of macros: | + | ! colspan="3" | Total number of macros: 233 |
|} | |} | ||
===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/core|"yyyymmL"}}, where {{c/core|"yyyy"}} is a year, and {{c/core|"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]]. |
===See also=== | ===See also=== |
Revision as of 01:02, 21 May 2024
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_adaptor_iterator_pair_constructor
|
202106L | <stack> <queue> |
__cpp_lib_addressof_constexpr
|
201603L | <memory> |
__cpp_lib_algorithm_default_value_type
|
202403L | <algorithm> <ranges> <string> <deque> <list> <forward_list> <vector> |
__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_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_associative_heterogeneous_insertion
|
202306L | <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_min_max
|
202403L | <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
|
202306L | <functional> |
__cpp_lib_bind_front
|
202306L | <functional> |
__cpp_lib_bit_cast
|
201806L | <bit> |
__cpp_lib_bitops
|
201907L | <bit> |
__cpp_lib_bitset
|
202306L | <bitset> |
__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
|
202306L | <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
|
202306L | <algorithm> <utility> |
__cpp_lib_constexpr_bitset
|
202207L | <bitset> |
__cpp_lib_constexpr_charconv
|
202207L | <charconv> |
__cpp_lib_constexpr_cmath
|
202306L | <cmath> <cstdlib> |
__cpp_lib_constexpr_complex
|
202306L | <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_constrained_equality
|
202403L | <utility> <tuple> <optional> <variant> |
__cpp_lib_containers_ranges
|
202202L | <vector> <list> <forward_list> <map> <set> <unordered_map> <unordered_set> <deque> <queue> <stack> <string> |
__cpp_lib_copyable_function
|
202306L | <functional> |
__cpp_lib_coroutine
|
201902L | <coroutine> |
__cpp_lib_debugging
|
202403L | <debugging> |
__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
|
202311L | <format> |
__cpp_lib_format_ranges
|
202207L | <format> |
__cpp_lib_format_path
|
202403L | <filesystem> |
__cpp_lib_format_uchar
|
202311L | <format> |
__cpp_lib_formatters
|
202302L | <stacktrace> <thread> |
__cpp_lib_forward_like
|
202207L | <utility> |
__cpp_lib_freestanding_algorithm
|
202311L | <algorithm> |
__cpp_lib_freestanding_array
|
202311L | <array> |
__cpp_lib_freestanding_char_traits
|
202306L | <string> |
__cpp_lib_freestanding_charconv
|
202306L | <charconv> |
__cpp_lib_freestanding_cstdlib
|
202306L | <cstdlib> <cmath> |
__cpp_lib_freestanding_cstring
|
202311L | <cstring> |
__cpp_lib_freestanding_cwchar
|
202306L | <cwchar> |
__cpp_lib_freestanding_errc
|
202306L | <cerrno> <system_error> |
__cpp_lib_freestanding_expected
|
202311L | <expected> |
__cpp_lib_freestanding_feature_test_macros
|
202306L | |
__cpp_lib_freestanding_functional
|
202306L | <functional> |
__cpp_lib_freestanding_iterator
|
202306L | <iterator> |
__cpp_lib_freestanding_mdspan
|
202311L | <mdspan> |
__cpp_lib_freestanding_memory
|
202306L | <memory> |
__cpp_lib_freestanding_numeric
|
202311L | <numeric> |
__cpp_lib_freestanding_optional
|
202311L | <optional> |
__cpp_lib_freestanding_ranges
|
202306L | <ranges> |
__cpp_lib_freestanding_ratio
|
202306L | <ratio> |
__cpp_lib_freestanding_string_view
|
202311L | <string_view> |
__cpp_lib_freestanding_tuple
|
202306L | <tuple> |
__cpp_lib_freestanding_utility
|
202306L | <utility> |
__cpp_lib_freestanding_variant
|
202311L | <variant> |
__cpp_lib_fstream_native_handle
|
202306L | <fstream> |
__cpp_lib_function_ref
|
202306L | <functional> |
__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_hazard_pointer
|
202306L | <hazard_pointer> |
__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_is_within_lifetime
|
202306L | <type_traits> |
__cpp_lib_jthread
|
201911L | <stop_token> <thread> |
__cpp_lib_latch
|
201907L | <latch> |
__cpp_lib_launder
|
201606L | <new> |
__cpp_lib_linalg
|
202311L | <linalg> |
__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
|
202306L | <functional> |
__cpp_lib_null_iterators
|
201304L | <iterator> |
__cpp_lib_optional
|
202110L | <optional> |
__cpp_lib_out_ptr
|
202311L | <memory> |
__cpp_lib_parallel_algorithm
|
201603L | <algorithm> <numeric> |
__cpp_lib_polymorphic_allocator
|
201902L | <memory_resource> |
__cpp_lib_print
|
202403L | <print> <ostream> |
__cpp_lib_quoted_string_io
|
201304L | <iomanip> |
__cpp_lib_ranges
|
202302L | <algorithm> <functional> <iterator> <memory> <ranges> |
__cpp_lib_ranges_as_const
|
202311L | <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_concat
|
202403L | <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_generate_random
|
202403L | <random> |
__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_ratio
|
202306L | <ratio> |
__cpp_lib_raw_memory_algorithms
|
201606L | <memory> |
__cpp_lib_rcu
|
202306L | <rcu> |
__cpp_lib_reference_from_temporary
|
202202L | <type_traits> |
__cpp_lib_reference_wrapper
|
202403L | <functional> |
__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_saturation_arithmetic
|
202311L | <numeric> |
__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_smart_ptr_owner_equality
|
202306L | <memory> |
__cpp_lib_source_location
|
201907L | <source_location> |
__cpp_lib_span
|
202311L | <span> |
__cpp_lib_span_initializer_list
|
202311L | <span> |
__cpp_lib_spanstream
|
202106L | <spanstream> |
__cpp_lib_ssize
|
201902L | <iterator> |
__cpp_lib_sstream_from_string_view
|
202306L | <sstream> |
__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
|
202403L | <string> <string_view> |
__cpp_lib_submdspan
|
202403L | <mdspan> |
__cpp_lib_syncbuf
|
201803L | <syncstream> |
__cpp_lib_text_encoding
|
202306L | <text_encoding> |
__cpp_lib_three_way_comparison
|
201907L | <compare> |
__cpp_lib_to_address
|
201711L | <memory> |
__cpp_lib_to_array
|
201907L | <array> |
__cpp_lib_to_chars
|
202306L | <charconv> |
__cpp_lib_to_string
|
202306L | <string> |
__cpp_lib_to_underlying
|
202102L | <utility> |
__cpp_lib_transformation_trait_aliases
|
201304L | <type_traits> |
__cpp_lib_transparent_operators
|
201510L | <memory> <functional> |
__cpp_lib_tuple_element_t
|
201402L | <tuple> |
__cpp_lib_tuple_like
|
202311L | <utility> <tuple> <map> <unordered_map> |
__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
|
202306L | <variant> |
__cpp_lib_void_t
|
202306L | <version> |
Total number of macros: 233 |
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 |
C++ documentation for Predefined Macro Symbols
|