utility_feature_test
utility_feature_test (기능 테스트 매크로)
이 페이지는 C++ 표준 라이브러리의 기능 테스트 매크로(feature-test macro)에 대해 설명해요. <version> 헤더나 표에 나열된 해당 헤더가 포함되면 각 매크로가 정의되어, 특정 기능이 구현에서 지원되는지 컴파일 타임에 확인할 수 있어요. 이 매크로들은 라이브러리 기능의 존재 여부를 조건부 컴파일로 검사할 때 유용해요.
출처: cppreference
본문
다음 각 매크로는 <version> 헤더 또는 표에 지정된 해당 헤더 중 하나가 포함되면 정의돼요.
| 매크로 이름 | 값 | 헤더 | 프리스탠딩 |
|---|---|---|---|
| __cpp_lib_adaptor_iterator_pair_constructor | 202106L | <stack> <queue> | |
| __cpp_lib_addressof_constexpr | 201603L | <memory> | Yes |
| __cpp_lib_algorithm_default_value_type | 202603L | <algorithm> <ranges> <string> <deque> <list> <forward_list> <vector> <memory> | |
| __cpp_lib_algorithm_iterator_requirements | 202207L | <algorithm> <numeric> <memory> | |
| __cpp_lib_aligned_accessor | 202411L | <mdspan> | Yes |
| __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> | Yes |
| __cpp_lib_any | 201606L | <any> | |
| __cpp_lib_apply | 202603L | <tuple> <type_traits> <meta> | Yes |
| __cpp_lib_array_constexpr | 201811L | <iterator> <array> | Yes |
| __cpp_lib_as_const | 201510L | <utility> | Yes |
| __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> | Yes |
| __cpp_lib_atomic_flag_test | 201907L | <atomic> | Yes |
| __cpp_lib_atomic_float | 201711L | <atomic> | Yes |
| __cpp_lib_atomic_is_always_lock_free | 201603L | <atomic> | Yes |
| __cpp_lib_atomic_lock_free_type_aliases | 201907L | <atomic> | |
| __cpp_lib_atomic_min_max | 202506L | <atomic> | Yes |
| __cpp_lib_atomic_reductions | 202506L | <atomic> | Yes |
| __cpp_lib_atomic_ref | 202603L | <atomic> | Yes |
| __cpp_lib_atomic_shared_ptr | 201711L | <memory> | |
| __cpp_lib_atomic_value_initialization | 201911L | <atomic> <memory> | Yes |
| __cpp_lib_atomic_wait | 201907L | <atomic> | Yes |
| __cpp_lib_barrier | 202302L | <barrier> | |
| __cpp_lib_bind_back | 202306L | <functional> | Yes |
| __cpp_lib_bind_front | 202306L | <functional> | Yes |
| __cpp_lib_bit_cast | 201806L | <bit> | Yes |
| __cpp_lib_bitops | 202607L | <bit> | Yes |
| __cpp_lib_bitset | 202306L | <bitset> | |
| __cpp_lib_bool_constant | 201505L | <type_traits> | Yes |
| __cpp_lib_bounded_array_traits | 201902L | <type_traits> | Yes |
| __cpp_lib_boyer_moore_searcher | 201603L | <functional> | |
| __cpp_lib_byte | 201603L | <cstddef> | Yes |
| __cpp_lib_byteswap | 202110L | <bit> | Yes |
| __cpp_lib_char8_t | 201907L | <atomic> <filesystem> <iosfwd> <istream> <limits> <locale> <ostream> <string> <string_view> | Yes |
| __cpp_lib_chrono | 202306L | <chrono> | |
| __cpp_lib_chrono_udls | 201304L | <chrono> | |
| __cpp_lib_clamp | 201603L | <algorithm> | Yes |
| __cpp_lib_common_reference | 202302L | <type_traits> | Yes |
| __cpp_lib_common_reference_wrapper | 202302L | <functional> | Yes |
| __cpp_lib_complex_udls | 201309L | <complex> | |
| __cpp_lib_concepts | 202207L | <concepts> <compare> | Yes |
| __cpp_lib_constant_wrapper | 202606L | <utility> | Yes |
| __cpp_lib_constexpr_algorithms | 202306L | <algorithm> <utility> | |
| __cpp_lib_constexpr_atomic | 202411L | <atomic> | |
| __cpp_lib_constexpr_bitset | 202207L | <bitset> | |
| __cpp_lib_constexpr_charconv | 202207L | <charconv> | Yes |
| __cpp_lib_constexpr_cmath | 202306L | <cmath> <cstdlib> | |
| __cpp_lib_constexpr_complex | 202306L | <complex> | |
| __cpp_lib_constexpr_deque | 202502L | <deque> | |
| __cpp_lib_constexpr_dynamic_alloc | 201907L | <memory> | |
| __cpp_lib_constexpr_exceptions | 202502L | <exception> <stdexcept> <expected> <optional> <variant> <format> | |
| __cpp_lib_constexpr_flat_map | 202502L | <flat_map> | |
| __cpp_lib_constexpr_flat_set | 202502L | <flat_set> | |
| __cpp_lib_constexpr_format | 202511L | <format> | |
| __cpp_lib_constexpr_forward_list | 202502L | <forward_list> | |
| __cpp_lib_constexpr_functional | 201907L | <functional> | Yes |
| __cpp_lib_constexpr_inplace_vector | 202502L | <inplace_vector> | |
| __cpp_lib_constexpr_iterator | 201811L | <iterator> | Yes |
| __cpp_lib_constexpr_list | 202502L | <list> | |
| __cpp_lib_constexpr_map | 202502L | <map> | |
| __cpp_lib_constexpr_memory | 202506L | <memory> | Yes |
| __cpp_lib_constexpr_new | 202406L | <new> | Yes |
| __cpp_lib_constexpr_numeric | 201911L | <numeric> | Yes |
| __cpp_lib_constexpr_queue | 202502L | <queue> | |
| __cpp_lib_constexpr_set | 202502L | <set> | |
| __cpp_lib_constexpr_stack | 202502L | <stack> | |
| __cpp_lib_constexpr_string | 202511L | <string> | |
| __cpp_lib_constexpr_string_view | 201811L | <string_view> | |
| __cpp_lib_constexpr_tuple | 201811L | <tuple> | Yes |
| __cpp_lib_constexpr_typeinfo | 202106L | <typeinfo> | Yes |
| __cpp_lib_constexpr_unordered_map | 202502L | <unordered_map> | |
| __cpp_lib_constexpr_unordered_set | 202502L | <unordered_set> | |
| __cpp_lib_constexpr_utility | 201811L | <utility> | Yes |
| __cpp_lib_constexpr_vector | 201907L | <vector> | |
| __cpp_lib_constrained_equality | 202411L | <utility> <tuple> <optional> <variant> <expected> | Yes |
| __cpp_lib_containers_ranges | 202202L | <vector> <list> <forward_list> <map> <set> <unordered_map> <unordered_set> <deque> <queue> <stack> <string> | |
| __cpp_lib_contracts | 202502L | <contracts> | Yes |
| __cpp_lib_copyable_function | 202306L | <functional> | |
| __cpp_lib_coroutine | 201902L | <coroutine> | Yes |
| __cpp_lib_counting_scope | 202506L | <execution> | |
| __cpp_lib_debugging | 202403L | <debugging> | Yes |
| __cpp_lib_define_static | 202506L | <meta> | Yes |
| __cpp_lib_destroying_delete | 201806L | <new> | Yes |
| __cpp_lib_enable_shared_from_this | 201603L | <memory> | |
| __cpp_lib_endian | 201907L | <bit> | Yes |
| __cpp_lib_erase_if | 202002L | <string> <deque> <forward_list> <list> <vector> <map> <set> <unordered_map> <unordered_set> | |
| __cpp_lib_exception_ptr_cast | 202603L | <exception> | |
| __cpp_lib_exchange_function | 201304L | <utility> | Yes |
| __cpp_lib_execution | 201902L | <execution> | |
| __cpp_lib_expected | 202606L | <expected> | |
| __cpp_lib_filesystem | 201703L | <filesystem> | |
| __cpp_lib_flat_map | 202511L | <flat_map> | |
| __cpp_lib_flat_set | 202511L | <flat_set> | |
| __cpp_lib_format | 202603L | <format> | |
| __cpp_lib_format_path | 202506L | <filesystem> | |
| __cpp_lib_format_ranges | 202207L | <format> | |
| __cpp_lib_format_uchar | 202311L | <format> | |
| __cpp_lib_formatters | 202302L | <stacktrace> <thread> | |
| __cpp_lib_forward_like | 202207L | <utility> | Yes |
| __cpp_lib_freestanding_algorithm | 202502L | <algorithm> | Yes |
| __cpp_lib_freestanding_array | 202311L | <array> | Yes |
| __cpp_lib_freestanding_char_traits | 202306L | <string> | Yes |
| __cpp_lib_freestanding_charconv | 202306L | <charconv> | Yes |
| __cpp_lib_freestanding_cstdlib | 202306L | <cstdlib> <cmath> | Yes |
| __cpp_lib_freestanding_cstring | 202311L | <cstring> | Yes |
| __cpp_lib_freestanding_cwchar | 202306L | <cwchar> | Yes |
| __cpp_lib_freestanding_errc | 202306L | <cerrno> <system_error> | Yes |
| __cpp_lib_freestanding_execution | 202502L | <execution> | Yes |
| __cpp_lib_freestanding_expected | 202311L | <expected> | Yes |
| __cpp_lib_freestanding_feature_test_macros | 202306L | Yes | |
| __cpp_lib_freestanding_functional | 202306L | <functional> | Yes |
| __cpp_lib_freestanding_iterator | 202306L | <iterator> | Yes |
| __cpp_lib_freestanding_mdspan | 202311L | <mdspan> | Yes |
| __cpp_lib_freestanding_memory | 202502L | <memory> | Yes |
| __cpp_lib_freestanding_numeric | 202502L | <numeric> | Yes |
| __cpp_lib_freestanding_operator_new | 202306L | <new> | Yes |
| __cpp_lib_freestanding_optional | 202506L | <optional> | Yes |
| __cpp_lib_freestanding_random | 202502L | <random> | Yes |
| __cpp_lib_freestanding_ranges | 202306L | <ranges> | Yes |
| __cpp_lib_freestanding_ratio | 202306L | <ratio> | Yes |
| __cpp_lib_freestanding_string_view | 202311L | <string_view> | Yes |
| __cpp_lib_freestanding_tuple | 202306L | <tuple> | Yes |
| __cpp_lib_freestanding_utility | 202306L | <utility> | Yes |
| __cpp_lib_freestanding_variant | 202311L | <variant> | Yes |
| __cpp_lib_fstream_native_handle | 202306L | <fstream> | |
| __cpp_lib_function_ref | 202604L | <functional> | Yes |
| __cpp_lib_gcd_lcm | 201606L | <numeric> | Yes |
| __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> | Yes |
| __cpp_lib_has_unique_object_representations | 201606L | <type_traits> | Yes |
| __cpp_lib_hazard_pointer | 202606L | <hazard_pointer> | |
| __cpp_lib_hive | 202502L | <hive> | |
| __cpp_lib_hypot | 201603L | <cmath> | |
| __cpp_lib_incomplete_container_elements | 201505L | <forward_list> <list> <vector> | |
| __cpp_lib_indirect | 202502L | <memory> | |
| __cpp_lib_initializer_list | 202511L | <initializer_list> | Yes |
| __cpp_lib_inplace_vector | 202603L | <inplace_vector> | |
| __cpp_lib_int_pow2 | 202002L | <bit> | Yes |
| __cpp_lib_integer_comparison_functions | 202002L | <utility> | Yes |
| __cpp_lib_integer_sequence | 202511L | <utility> | Yes |
| __cpp_lib_integral_constant_callable | 201304L | <type_traits> | Yes |
| __cpp_lib_interpolate | 201902L | <cmath> <numeric> | |
| __cpp_lib_invoke | 201411L | <functional> | Yes |
| __cpp_lib_invoke_r | 202106L | <functional> | Yes |
| __cpp_lib_ios_noreplace | 202207L | <ios> | |
| __cpp_lib_is_aggregate | 201703L | <type_traits> | Yes |
| __cpp_lib_is_constant_evaluated | 201811L | <type_traits> | Yes |
| __cpp_lib_is_final | 201402L | <type_traits> | Yes |
| __cpp_lib_is_implicit_lifetime | 202302L | <type_traits> | Yes |
| __cpp_lib_is_invocable | 201703L | <type_traits> | Yes |
| __cpp_lib_is_layout_compatible | 201907L | <type_traits> | Yes |
| __cpp_lib_is_nothrow_convertible | 201806L | <type_traits> | Yes |
| __cpp_lib_is_null_pointer | 201309L | <type_traits> | Yes |
| __cpp_lib_is_pointer_interconvertible | 201907L | <type_traits> | Yes |
| __cpp_lib_is_scoped_enum | 202011L | <type_traits> | Yes |
| __cpp_lib_is_structural | 202603L | <meta> <type_traits> | Yes |
| __cpp_lib_is_sufficiently_aligned | 202411L | <memory> | Yes |
| __cpp_lib_is_swappable | 201603L | <type_traits> | Yes |
| __cpp_lib_is_virtual_base_of | 202406L | <type_traits> | Yes |
| __cpp_lib_is_within_lifetime | 202603L | <type_traits> | Yes |
| __cpp_lib_jthread | 201911L | <stop_token> <thread> | |
| __cpp_lib_latch | 201907L | <latch> | |
| __cpp_lib_launder | 201606L | <new> | Yes |
| __cpp_lib_linalg | 202511L | <linalg> | |
| __cpp_lib_list_remove_return_type | 201806L | <forward_list> <list> | |
| __cpp_lib_logical_traits | 201510L | <type_traits> | Yes |
| __cpp_lib_make_from_tuple | 201606L | <tuple> | Yes |
| __cpp_lib_make_reverse_iterator | 201402L | <iterator> | Yes |
| __cpp_lib_make_unique | 201304L | <memory> | |
| __cpp_lib_map_lookup | 202606L | <map> <unordered_map> <flat_map> | |
| __cpp_lib_map_try_emplace | 201411L | <map> | |
| __cpp_lib_math_constants | 201907L | <numbers> | |
| __cpp_lib_math_special_functions | 201603L | <cmath> | |
| __cpp_lib_mdspan | 202406L | <mdspan> | Yes |
| __cpp_lib_mdspan_copy | 202606L | <mdspan> | |
| __cpp_lib_memory_resource | 201603L | <memory_resource> | |
| __cpp_lib_modules | 202207L | Yes | |
| __cpp_lib_move_iterator_concept | 202207L | <iterator> | Yes |
| __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> | Yes |
| __cpp_lib_not_fn | 202306L | <functional> | Yes |
| __cpp_lib_null_iterators | 201304L | <iterator> | Yes |
| __cpp_lib_observable_checkpoint | 202506L | <utility> | Yes |
| __cpp_lib_optional | 202506L | <optional> | |
| __cpp_lib_optional_range_support | 202406L | <optional> | Yes |
| __cpp_lib_out_ptr | 202311L | <memory> | Yes |
| __cpp_lib_parallel_algorithm | 202506L | <algorithm> <numeric> <memory> | |
| __cpp_lib_parallel_scheduler | 202506L | <execution> | |
| __cpp_lib_philox_engine | 202406L | <random> | |
| __cpp_lib_pointer_tag_pair | 202606L | <memory> | Yes |
| __cpp_lib_polymorphic | 202502L | <memory> | |
| __cpp_lib_polymorphic_allocator | 201902L | <memory_resource> | |
| __cpp_lib_print | 202406L | <print> <ostream> | |
| __cpp_lib_quoted_string_io | 201304L | <iomanip> | |
| __cpp_lib_ranges | 202406L | <algorithm> <functional> <iterator> <memory> <ranges> | |
| __cpp_lib_ranges_as_const | 202311L | <ranges> | Yes |
| __cpp_lib_ranges_as_input | 202502L | <ranges> | Yes |
| __cpp_lib_ranges_as_rvalue | 202207L | <ranges> | Yes |
| __cpp_lib_ranges_cache_latest | 202411L | <ranges> | Yes |
| __cpp_lib_ranges_cartesian_product | 202207L | <ranges> | Yes |
| __cpp_lib_ranges_chunk | 202202L | <ranges> | Yes |
| __cpp_lib_ranges_chunk_by | 202202L | <ranges> | Yes |
| __cpp_lib_ranges_concat | 202403L | <ranges> | Yes |
| __cpp_lib_ranges_contains | 202207L | <algorithm> | Yes |
| __cpp_lib_ranges_enumerate | 202302L | <ranges> | Yes |
| __cpp_lib_ranges_filter | 202603L | <ranges> | Yes |
| __cpp_lib_ranges_find_last | 202207L | <algorithm> | Yes |
| __cpp_lib_ranges_fold | 202207L | <algorithm> | Yes |
| __cpp_lib_ranges_generate_random | 202403L | <random> | |
| __cpp_lib_ranges_indices | 202506L | <ranges> | |
| __cpp_lib_ranges_iota | 202202L | <numeric> | Yes |
| __cpp_lib_ranges_join_with | 202202L | <ranges> | Yes |
| __cpp_lib_ranges_repeat | 202207L | <ranges> | Yes |
| __cpp_lib_ranges_reserve_hint | 202502L | <ranges> | |
| __cpp_lib_ranges_slide | 202202L | <ranges> | Yes |
| __cpp_lib_ranges_starts_ends_with | 202106L | <algorithm> | Yes |
| __cpp_lib_ranges_stride | 202207L | <ranges> | Yes |
| __cpp_lib_ranges_to_container | 202202L | <ranges> | Yes |
| __cpp_lib_ranges_zip | 202110L | <ranges> <tuple> <utility> | Yes |
| __cpp_lib_ratio | 202306L | <ratio> | Yes |
| __cpp_lib_raw_memory_algorithms | 202411L | <memory> | |
| __cpp_lib_rcu | 202306L | <rcu> | |
| __cpp_lib_reference_from_temporary | 202202L | <type_traits> | Yes |
| __cpp_lib_reference_wrapper | 202403L | <functional> | Yes |
| __cpp_lib_reflection | 202603L | <meta> | |
| __cpp_lib_remove_cvref | 201711L | <type_traits> | Yes |
| __cpp_lib_replaceable_contract_violation_handler | 202603L | <contracts> | Yes |
| __cpp_lib_result_of_sfinae | 201210L | <functional> <type_traits> | Yes |
| __cpp_lib_robust_nonmodifying_seq_ops | 201304L | <algorithm> | Yes |
| __cpp_lib_sample | 201603L | <algorithm> | Yes |
| __cpp_lib_saturation_arithmetic | 202603L | <numeric> | Yes |
| __cpp_lib_scoped_lock | 201703L | <mutex> | |
| __cpp_lib_semaphore | 201907L | <semaphore> | |
| __cpp_lib_senders | 202506L | <execution> | |
| __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_simd | 202606L | <simd> | |
| __cpp_lib_simd_bitops | 202607L | <simd> | |
| __cpp_lib_simd_complex | 202502L | <simd> | |
| __cpp_lib_simd_permutations | 202506L | <simd> | |
| __cpp_lib_smart_ptr_for_overwrite | 202002L | <memory> | |
| __cpp_lib_smart_ptr_owner_equality | 202306L | <memory> | |
| __cpp_lib_source_location | 201907L | <source_location> | Yes |
| __cpp_lib_span | 202311L | <span> | Yes |
| __cpp_lib_spanstream | 202106L | <iosfwd> <spanstream> | |
| __cpp_lib_ssize | 201902L | <iterator> | Yes |
| __cpp_lib_sstream_from_string_view | 202306L | <sstream> | |
| __cpp_lib_stacktrace | 202011L | <stacktrace> | |
| __cpp_lib_start_lifetime | 202603L | <memory> | Yes |
| __cpp_lib_start_lifetime_as | 202207L | <memory> | Yes |
| __cpp_lib_starts_ends_with | 201711L | <string> <string_view> | |
| __cpp_lib_stdatomic_h | 202011L | <stdatomic.h> | |
| __cpp_lib_stdbit_h | 202603L | <stdbit.h> | |
| __cpp_lib_stdckdint_h | 202603L | <stdckdint.h> | |
| __cpp_lib_string_contains | 202011L | <string> <string_view> | |
| __cpp_lib_string_resize_and_overwrite | 202110L | <string> | |
| __cpp_lib_string_subview | 202506L | <string> <string_view> | |
| __cpp_lib_string_udls | 201304L | <string> | |
| __cpp_lib_string_view | 202403L | <string> <string_view> | |
| __cpp_lib_submdspan | 202603L | <mdspan> | Yes |
| __cpp_lib_syncbuf | 201803L | <iosfwd> <syncstream> | |
| __cpp_lib_task | 202506L | <execution> | |
| __cpp_lib_text_encoding | 202306L | <text_encoding> | |
| __cpp_lib_thread_attributes | 202606L | <thread> | |
| __cpp_lib_three_way_comparison | 201907L | <compare> | Yes |
| __cpp_lib_to_address | 201711L | <memory> | Yes |
| __cpp_lib_to_array | 201907L | <array> | Yes |
| __cpp_lib_to_chars | 202606L | <charconv> | |
| __cpp_lib_to_string | 202306L | <string> | |
| __cpp_lib_to_underlying | 202102L | <utility> | Yes |
| __cpp_lib_transformation_trait_aliases | 201304L | <type_traits> | Yes |
| __cpp_lib_transparent_operators | 201510L | <memory> <functional> | Yes |
| __cpp_lib_tuple_element_t | 201402L | <tuple> | Yes |
| __cpp_lib_tuple_like | 202311L | <utility> <tuple> <map> <unordered_map> | |
| __cpp_lib_tuples_by_type | 201304L | <utility> <tuple> | Yes |
| __cpp_lib_type_identity | 201806L | <type_traits> | Yes |
| __cpp_lib_type_order | 202506L | <compare> | |
| __cpp_lib_type_trait_variable_templates | 201510L | <type_traits> | Yes |
| __cpp_lib_uncaught_exceptions | 201411L | <exception> | Yes |
| __cpp_lib_unordered_map_try_emplace | 201411L | <unordered_map> | |
| __cpp_lib_unreachable | 202202L | <utility> | Yes |
| __cpp_lib_unwrap_ref | 201811L | <type_traits> | Yes |
| __cpp_lib_valarray | 202511L | <valarray> | |
| __cpp_lib_variant | 202306L | <variant> | |
| __cpp_lib_view_interface | 202606L | <ranges> | |
| __cpp_lib_void_t | 201411L | <type_traits> | Yes |
매크로 총 개수: 294
하드닝된 구현(hardened implementation)에서는 다음 매크로도 정의돼요.
| 매크로 이름 | 값 | 헤더 |
|---|---|---|
| __cpp_lib_hardened_array | 202502L | <array> |
| __cpp_lib_hardened_basic_stacktrace | 202506L | <stacktrace> |
| __cpp_lib_hardened_basic_string | 202502L | <string> |
| __cpp_lib_hardened_basic_string_view | 202502L | <string_view> |
| __cpp_lib_hardened_bitset | 202502L | <bitset> |
| __cpp_lib_hardened_common_iterator | 202506L | <iterator> |
| __cpp_lib_hardened_counted_iterator | 202506L | <iterator> |
| __cpp_lib_hardened_deque | 202502L | <deque> |
| __cpp_lib_hardened_expected | 202502L | <expected> |
| __cpp_lib_hardened_forward_list | 202502L | <forward_list> |
| __cpp_lib_hardened_inplace_vector | 202502L | <inplace_vector> |
| __cpp_lib_hardened_list | 202502L | <list> |
| __cpp_lib_hardened_mdspan | 202502L | <mdspan> |
| __cpp_lib_hardened_optional | 202502L | <optional> |
| __cpp_lib_hardened_shared_ptr_array | 202506L | <memory> |
| __cpp_lib_hardened_span | 202502L | <span> |
| __cpp_lib_hardened_valarray | 202502L | <valarray> |
| __cpp_lib_hardened_vector | 202502L | <vector> |
| __cpp_lib_hardened_view_interface | 202506L | <ranges> |
매크로 총 개수: 19
Notes
"값" 열의 각 값은 "yyyymmL" 패턴을 따라요. 여기서 "yyyy"는 연도, "mm"은 해당 기능 집합이 표준화를 위해 채택된 달을 나타내요. 일부 값은 기능이 확장되면서 도입 당시보다 증가했어요. 위 표에는 가장 최근 값(즉, 최신 C++ 언어 초안 표준에서 가져온 값)만 포함돼요. 초기 및 중간 값을 포함한 전체 값 집합은 이 표에서 확인할 수 있어요.
Defect reports
이전에 발표된 C++ 표준에 소급 적용된 동작 변경 결함 보고서는 다음과 같아요.
| DR | 적용 대상 | 발표된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 4126 | C++20 C++23 | 완전한 프리스탠딩 기능을 위한 일부 기능 테스트 매크로가 프리스탠딩이 아니었음 | 그것들도 프리스탠딩임 |
See also
- Feature testing (C++20) — C++ 언어 및 라이브러리 기능을 테스트하기 위한 전처리기 매크로 집합
- C++ documentation for Headers required for a freestanding implementation — 프리스탠딩 구현에 필요한 헤더
- C++ documentation for Predefined Macro Symbols — 미리 정의된 매크로 기호