1 .. _FeatureTestMacroTable:
3 ==========================
4 Feature Test Macro Support
5 ==========================
13 This file documents the feature test macros currently supported by libc++.
20 .. table:: Current Status
21 :name: feature-status-table
24 ================================================= =================
26 ================================================= =================
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 ------------------------------------------------- -----------------
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`` *unimplemented*
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 ------------------------------------------------- -----------------
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_swap_algorithms`` *unimplemented*
200 ------------------------------------------------- -----------------
201 ``__cpp_lib_constexpr_utility`` ``201811L``
202 ------------------------------------------------- -----------------
203 ``__cpp_lib_destroying_delete`` ``201806L``
204 ------------------------------------------------- -----------------
205 ``__cpp_lib_endian`` ``201907L``
206 ------------------------------------------------- -----------------
207 ``__cpp_lib_erase_if`` ``202002L``
208 ------------------------------------------------- -----------------
209 ``__cpp_lib_generic_unordered_lookup`` *unimplemented*
210 ------------------------------------------------- -----------------
211 ``__cpp_lib_interpolate`` ``201902L``
212 ------------------------------------------------- -----------------
213 ``__cpp_lib_is_constant_evaluated`` ``201811L``
214 ------------------------------------------------- -----------------
215 ``__cpp_lib_list_remove_return_type`` ``201806L``
216 ------------------------------------------------- -----------------
217 ``__cpp_lib_math_constants`` ``201907L``
218 ------------------------------------------------- -----------------
219 ``__cpp_lib_ranges`` *unimplemented*
220 ------------------------------------------------- -----------------
221 ``__cpp_lib_span`` ``202002L``
222 ------------------------------------------------- -----------------
223 ``__cpp_lib_three_way_comparison`` *unimplemented*
224 ------------------------------------------------- -----------------
225 ``__cpp_lib_to_array`` ``201907L``
226 ================================================= =================