1.. _FeatureTestMacroTable: 2 3========================== 4Feature Test Macro Support 5========================== 6 7.. contents:: 8 :local: 9 10Overview 11======== 12 13This file documents the feature test macros currently supported by libc++. 14 15.. _feature-status: 16 17Status 18====== 19 20.. table:: Current Status 21 :name: feature-status-table 22 :widths: auto 23 24 ================================================= ================= 25 Macro Name Value 26 ================================================= ================= 27 **C++ 14** 28 ------------------------------------------------------------------- 29 ``__cpp_lib_chrono_udls`` ``201304L`` 30 ------------------------------------------------- ----------------- 31 ``__cpp_lib_complex_udls`` ``201309L`` 32 ------------------------------------------------- ----------------- 33 ``__cpp_lib_exchange_function`` ``201304L`` 34 ------------------------------------------------- ----------------- 35 ``__cpp_lib_generic_associative_lookup`` ``201304L`` 36 ------------------------------------------------- ----------------- 37 ``__cpp_lib_integer_sequence`` ``201304L`` 38 ------------------------------------------------- ----------------- 39 ``__cpp_lib_integral_constant_callable`` ``201304L`` 40 ------------------------------------------------- ----------------- 41 ``__cpp_lib_is_final`` ``201402L`` 42 ------------------------------------------------- ----------------- 43 ``__cpp_lib_is_null_pointer`` ``201309L`` 44 ------------------------------------------------- ----------------- 45 ``__cpp_lib_make_reverse_iterator`` ``201402L`` 46 ------------------------------------------------- ----------------- 47 ``__cpp_lib_make_unique`` ``201304L`` 48 ------------------------------------------------- ----------------- 49 ``__cpp_lib_null_iterators`` ``201304L`` 50 ------------------------------------------------- ----------------- 51 ``__cpp_lib_quoted_string_io`` ``201304L`` 52 ------------------------------------------------- ----------------- 53 ``__cpp_lib_result_of_sfinae`` ``201210L`` 54 ------------------------------------------------- ----------------- 55 ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L`` 56 ------------------------------------------------- ----------------- 57 ``__cpp_lib_shared_timed_mutex`` ``201402L`` 58 ------------------------------------------------- ----------------- 59 ``__cpp_lib_string_udls`` ``201304L`` 60 ------------------------------------------------- ----------------- 61 ``__cpp_lib_transformation_trait_aliases`` ``201304L`` 62 ------------------------------------------------- ----------------- 63 ``__cpp_lib_transparent_operators`` ``201210L`` 64 ------------------------------------------------- ----------------- 65 ``__cpp_lib_tuple_element_t`` ``201402L`` 66 ------------------------------------------------- ----------------- 67 ``__cpp_lib_tuples_by_type`` ``201304L`` 68 ------------------------------------------------- ----------------- 69 **C++ 17** 70 ------------------------------------------------------------------- 71 ``__cpp_lib_addressof_constexpr`` ``201603L`` 72 ------------------------------------------------- ----------------- 73 ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L`` 74 ------------------------------------------------- ----------------- 75 ``__cpp_lib_any`` ``201606L`` 76 ------------------------------------------------- ----------------- 77 ``__cpp_lib_apply`` ``201603L`` 78 ------------------------------------------------- ----------------- 79 ``__cpp_lib_array_constexpr`` ``201603L`` 80 ------------------------------------------------- ----------------- 81 ``__cpp_lib_as_const`` ``201510L`` 82 ------------------------------------------------- ----------------- 83 ``__cpp_lib_atomic_is_always_lock_free`` ``201603L`` 84 ------------------------------------------------- ----------------- 85 ``__cpp_lib_bool_constant`` ``201505L`` 86 ------------------------------------------------- ----------------- 87 ``__cpp_lib_boyer_moore_searcher`` *unimplemented* 88 ------------------------------------------------- ----------------- 89 ``__cpp_lib_byte`` ``201603L`` 90 ------------------------------------------------- ----------------- 91 ``__cpp_lib_chrono`` ``201611L`` 92 ------------------------------------------------- ----------------- 93 ``__cpp_lib_clamp`` ``201603L`` 94 ------------------------------------------------- ----------------- 95 ``__cpp_lib_enable_shared_from_this`` ``201603L`` 96 ------------------------------------------------- ----------------- 97 ``__cpp_lib_execution`` *unimplemented* 98 ------------------------------------------------- ----------------- 99 ``__cpp_lib_filesystem`` ``201703L`` 100 ------------------------------------------------- ----------------- 101 ``__cpp_lib_gcd_lcm`` ``201606L`` 102 ------------------------------------------------- ----------------- 103 ``__cpp_lib_hardware_interference_size`` *unimplemented* 104 ------------------------------------------------- ----------------- 105 ``__cpp_lib_has_unique_object_representations`` ``201606L`` 106 ------------------------------------------------- ----------------- 107 ``__cpp_lib_hypot`` ``201603L`` 108 ------------------------------------------------- ----------------- 109 ``__cpp_lib_incomplete_container_elements`` ``201505L`` 110 ------------------------------------------------- ----------------- 111 ``__cpp_lib_invoke`` ``201411L`` 112 ------------------------------------------------- ----------------- 113 ``__cpp_lib_is_aggregate`` ``201703L`` 114 ------------------------------------------------- ----------------- 115 ``__cpp_lib_is_invocable`` ``201703L`` 116 ------------------------------------------------- ----------------- 117 ``__cpp_lib_is_swappable`` ``201603L`` 118 ------------------------------------------------- ----------------- 119 ``__cpp_lib_launder`` ``201606L`` 120 ------------------------------------------------- ----------------- 121 ``__cpp_lib_logical_traits`` ``201510L`` 122 ------------------------------------------------- ----------------- 123 ``__cpp_lib_make_from_tuple`` ``201606L`` 124 ------------------------------------------------- ----------------- 125 ``__cpp_lib_map_try_emplace`` ``201411L`` 126 ------------------------------------------------- ----------------- 127 ``__cpp_lib_math_special_functions`` *unimplemented* 128 ------------------------------------------------- ----------------- 129 ``__cpp_lib_memory_resource`` *unimplemented* 130 ------------------------------------------------- ----------------- 131 ``__cpp_lib_node_extract`` ``201606L`` 132 ------------------------------------------------- ----------------- 133 ``__cpp_lib_nonmember_container_access`` ``201411L`` 134 ------------------------------------------------- ----------------- 135 ``__cpp_lib_not_fn`` ``201603L`` 136 ------------------------------------------------- ----------------- 137 ``__cpp_lib_optional`` ``201606L`` 138 ------------------------------------------------- ----------------- 139 ``__cpp_lib_parallel_algorithm`` *unimplemented* 140 ------------------------------------------------- ----------------- 141 ``__cpp_lib_raw_memory_algorithms`` ``201606L`` 142 ------------------------------------------------- ----------------- 143 ``__cpp_lib_sample`` ``201603L`` 144 ------------------------------------------------- ----------------- 145 ``__cpp_lib_scoped_lock`` ``201703L`` 146 ------------------------------------------------- ----------------- 147 ``__cpp_lib_shared_mutex`` ``201505L`` 148 ------------------------------------------------- ----------------- 149 ``__cpp_lib_shared_ptr_arrays`` ``201611L`` 150 ------------------------------------------------- ----------------- 151 ``__cpp_lib_shared_ptr_weak_type`` ``201606L`` 152 ------------------------------------------------- ----------------- 153 ``__cpp_lib_string_view`` ``201606L`` 154 ------------------------------------------------- ----------------- 155 ``__cpp_lib_to_chars`` *unimplemented* 156 ------------------------------------------------- ----------------- 157 ``__cpp_lib_transparent_operators`` ``201510L`` 158 ------------------------------------------------- ----------------- 159 ``__cpp_lib_type_trait_variable_templates`` ``201510L`` 160 ------------------------------------------------- ----------------- 161 ``__cpp_lib_uncaught_exceptions`` ``201411L`` 162 ------------------------------------------------- ----------------- 163 ``__cpp_lib_unordered_map_try_emplace`` ``201411L`` 164 ------------------------------------------------- ----------------- 165 ``__cpp_lib_variant`` ``201606L`` 166 ------------------------------------------------- ----------------- 167 ``__cpp_lib_void_t`` ``201411L`` 168 ------------------------------------------------- ----------------- 169 **C++ 2a** 170 ------------------------------------------------------------------- 171 ``__cpp_lib_array_constexpr`` ``201811L`` 172 ------------------------------------------------- ----------------- 173 ``__cpp_lib_atomic_flag_test`` ``201907L`` 174 ------------------------------------------------- ----------------- 175 ``__cpp_lib_atomic_float`` *unimplemented* 176 ------------------------------------------------- ----------------- 177 ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` 178 ------------------------------------------------- ----------------- 179 ``__cpp_lib_atomic_ref`` *unimplemented* 180 ------------------------------------------------- ----------------- 181 ``__cpp_lib_atomic_shared_ptr`` *unimplemented* 182 ------------------------------------------------- ----------------- 183 ``__cpp_lib_atomic_value_initialization`` *unimplemented* 184 ------------------------------------------------- ----------------- 185 ``__cpp_lib_atomic_wait`` ``201907L`` 186 ------------------------------------------------- ----------------- 187 ``__cpp_lib_bind_front`` *unimplemented* 188 ------------------------------------------------- ----------------- 189 ``__cpp_lib_bit_cast`` *unimplemented* 190 ------------------------------------------------- ----------------- 191 ``__cpp_lib_char8_t`` ``201811L`` 192 ------------------------------------------------- ----------------- 193 ``__cpp_lib_concepts`` *unimplemented* 194 ------------------------------------------------- ----------------- 195 ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L`` 196 ------------------------------------------------- ----------------- 197 ``__cpp_lib_constexpr_misc`` *unimplemented* 198 ------------------------------------------------- ----------------- 199 ``__cpp_lib_constexpr_numeric`` ``201911L`` 200 ------------------------------------------------- ----------------- 201 ``__cpp_lib_constexpr_swap_algorithms`` *unimplemented* 202 ------------------------------------------------- ----------------- 203 ``__cpp_lib_constexpr_utility`` ``201811L`` 204 ------------------------------------------------- ----------------- 205 ``__cpp_lib_destroying_delete`` ``201806L`` 206 ------------------------------------------------- ----------------- 207 ``__cpp_lib_endian`` ``201907L`` 208 ------------------------------------------------- ----------------- 209 ``__cpp_lib_erase_if`` ``202002L`` 210 ------------------------------------------------- ----------------- 211 ``__cpp_lib_generic_unordered_lookup`` ``201811L`` 212 ------------------------------------------------- ----------------- 213 ``__cpp_lib_int_pow2`` ``202002L`` 214 ------------------------------------------------- ----------------- 215 ``__cpp_lib_interpolate`` ``201902L`` 216 ------------------------------------------------- ----------------- 217 ``__cpp_lib_is_constant_evaluated`` ``201811L`` 218 ------------------------------------------------- ----------------- 219 ``__cpp_lib_list_remove_return_type`` ``201806L`` 220 ------------------------------------------------- ----------------- 221 ``__cpp_lib_math_constants`` ``201907L`` 222 ------------------------------------------------- ----------------- 223 ``__cpp_lib_ranges`` *unimplemented* 224 ------------------------------------------------- ----------------- 225 ``__cpp_lib_span`` ``202002L`` 226 ------------------------------------------------- ----------------- 227 ``__cpp_lib_three_way_comparison`` *unimplemented* 228 ------------------------------------------------- ----------------- 229 ``__cpp_lib_to_array`` ``201907L`` 230 ================================================= ================= 231 232