FeatureTestMacroTable.rst revision 1.1 1 1.1 joerg .. _FeatureTestMacroTable:
2 1.1 joerg
3 1.1 joerg ==========================
4 1.1 joerg Feature Test Macro Support
5 1.1 joerg ==========================
6 1.1 joerg
7 1.1 joerg .. contents::
8 1.1 joerg :local:
9 1.1 joerg
10 1.1 joerg Overview
11 1.1 joerg ========
12 1.1 joerg
13 1.1 joerg This file documents the feature test macros currently supported by libc++.
14 1.1 joerg
15 1.1 joerg .. _feature-status:
16 1.1 joerg
17 1.1 joerg Status
18 1.1 joerg ======
19 1.1 joerg
20 1.1 joerg .. table:: Current Status
21 1.1 joerg :name: feature-status-table
22 1.1 joerg :widths: auto
23 1.1 joerg
24 1.1 joerg ================================================= =================
25 1.1 joerg Macro Name Value
26 1.1 joerg ================================================= =================
27 1.1 joerg **C++ 14**
28 1.1 joerg -------------------------------------------------------------------
29 1.1 joerg ``__cpp_lib_chrono_udls`` ``201304L``
30 1.1 joerg ------------------------------------------------- -----------------
31 1.1 joerg ``__cpp_lib_complex_udls`` ``201309L``
32 1.1 joerg ------------------------------------------------- -----------------
33 1.1 joerg ``__cpp_lib_exchange_function`` ``201304L``
34 1.1 joerg ------------------------------------------------- -----------------
35 1.1 joerg ``__cpp_lib_generic_associative_lookup`` ``201304L``
36 1.1 joerg ------------------------------------------------- -----------------
37 1.1 joerg ``__cpp_lib_integer_sequence`` ``201304L``
38 1.1 joerg ------------------------------------------------- -----------------
39 1.1 joerg ``__cpp_lib_integral_constant_callable`` ``201304L``
40 1.1 joerg ------------------------------------------------- -----------------
41 1.1 joerg ``__cpp_lib_is_final`` ``201402L``
42 1.1 joerg ------------------------------------------------- -----------------
43 1.1 joerg ``__cpp_lib_is_null_pointer`` ``201309L``
44 1.1 joerg ------------------------------------------------- -----------------
45 1.1 joerg ``__cpp_lib_make_reverse_iterator`` ``201402L``
46 1.1 joerg ------------------------------------------------- -----------------
47 1.1 joerg ``__cpp_lib_make_unique`` ``201304L``
48 1.1 joerg ------------------------------------------------- -----------------
49 1.1 joerg ``__cpp_lib_null_iterators`` ``201304L``
50 1.1 joerg ------------------------------------------------- -----------------
51 1.1 joerg ``__cpp_lib_quoted_string_io`` ``201304L``
52 1.1 joerg ------------------------------------------------- -----------------
53 1.1 joerg ``__cpp_lib_result_of_sfinae`` ``201210L``
54 1.1 joerg ------------------------------------------------- -----------------
55 1.1 joerg ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L``
56 1.1 joerg ------------------------------------------------- -----------------
57 1.1 joerg ``__cpp_lib_shared_timed_mutex`` ``201402L``
58 1.1 joerg ------------------------------------------------- -----------------
59 1.1 joerg ``__cpp_lib_string_udls`` ``201304L``
60 1.1 joerg ------------------------------------------------- -----------------
61 1.1 joerg ``__cpp_lib_transformation_trait_aliases`` ``201304L``
62 1.1 joerg ------------------------------------------------- -----------------
63 1.1 joerg ``__cpp_lib_transparent_operators`` ``201210L``
64 1.1 joerg ------------------------------------------------- -----------------
65 1.1 joerg ``__cpp_lib_tuple_element_t`` ``201402L``
66 1.1 joerg ------------------------------------------------- -----------------
67 1.1 joerg ``__cpp_lib_tuples_by_type`` ``201304L``
68 1.1 joerg ------------------------------------------------- -----------------
69 1.1 joerg **C++ 17**
70 1.1 joerg -------------------------------------------------------------------
71 1.1 joerg ``__cpp_lib_addressof_constexpr`` ``201603L``
72 1.1 joerg ------------------------------------------------- -----------------
73 1.1 joerg ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L``
74 1.1 joerg ------------------------------------------------- -----------------
75 1.1 joerg ``__cpp_lib_any`` ``201606L``
76 1.1 joerg ------------------------------------------------- -----------------
77 1.1 joerg ``__cpp_lib_apply`` ``201603L``
78 1.1 joerg ------------------------------------------------- -----------------
79 1.1 joerg ``__cpp_lib_array_constexpr`` ``201603L``
80 1.1 joerg ------------------------------------------------- -----------------
81 1.1 joerg ``__cpp_lib_as_const`` ``201510L``
82 1.1 joerg ------------------------------------------------- -----------------
83 1.1 joerg ``__cpp_lib_atomic_is_always_lock_free`` ``201603L``
84 1.1 joerg ------------------------------------------------- -----------------
85 1.1 joerg ``__cpp_lib_bool_constant`` ``201505L``
86 1.1 joerg ------------------------------------------------- -----------------
87 1.1 joerg ``__cpp_lib_boyer_moore_searcher`` *unimplemented*
88 1.1 joerg ------------------------------------------------- -----------------
89 1.1 joerg ``__cpp_lib_byte`` ``201603L``
90 1.1 joerg ------------------------------------------------- -----------------
91 1.1 joerg ``__cpp_lib_chrono`` ``201611L``
92 1.1 joerg ------------------------------------------------- -----------------
93 1.1 joerg ``__cpp_lib_clamp`` ``201603L``
94 1.1 joerg ------------------------------------------------- -----------------
95 1.1 joerg ``__cpp_lib_enable_shared_from_this`` ``201603L``
96 1.1 joerg ------------------------------------------------- -----------------
97 1.1 joerg ``__cpp_lib_execution`` *unimplemented*
98 1.1 joerg ------------------------------------------------- -----------------
99 1.1 joerg ``__cpp_lib_filesystem`` ``201703L``
100 1.1 joerg ------------------------------------------------- -----------------
101 1.1 joerg ``__cpp_lib_gcd_lcm`` ``201606L``
102 1.1 joerg ------------------------------------------------- -----------------
103 1.1 joerg ``__cpp_lib_hardware_interference_size`` *unimplemented*
104 1.1 joerg ------------------------------------------------- -----------------
105 1.1 joerg ``__cpp_lib_has_unique_object_representations`` ``201606L``
106 1.1 joerg ------------------------------------------------- -----------------
107 1.1 joerg ``__cpp_lib_hypot`` ``201603L``
108 1.1 joerg ------------------------------------------------- -----------------
109 1.1 joerg ``__cpp_lib_incomplete_container_elements`` ``201505L``
110 1.1 joerg ------------------------------------------------- -----------------
111 1.1 joerg ``__cpp_lib_invoke`` ``201411L``
112 1.1 joerg ------------------------------------------------- -----------------
113 1.1 joerg ``__cpp_lib_is_aggregate`` ``201703L``
114 1.1 joerg ------------------------------------------------- -----------------
115 1.1 joerg ``__cpp_lib_is_invocable`` ``201703L``
116 1.1 joerg ------------------------------------------------- -----------------
117 1.1 joerg ``__cpp_lib_is_swappable`` ``201603L``
118 1.1 joerg ------------------------------------------------- -----------------
119 1.1 joerg ``__cpp_lib_launder`` ``201606L``
120 1.1 joerg ------------------------------------------------- -----------------
121 1.1 joerg ``__cpp_lib_logical_traits`` ``201510L``
122 1.1 joerg ------------------------------------------------- -----------------
123 1.1 joerg ``__cpp_lib_make_from_tuple`` ``201606L``
124 1.1 joerg ------------------------------------------------- -----------------
125 1.1 joerg ``__cpp_lib_map_try_emplace`` ``201411L``
126 1.1 joerg ------------------------------------------------- -----------------
127 1.1 joerg ``__cpp_lib_math_special_functions`` *unimplemented*
128 1.1 joerg ------------------------------------------------- -----------------
129 1.1 joerg ``__cpp_lib_memory_resource`` *unimplemented*
130 1.1 joerg ------------------------------------------------- -----------------
131 1.1 joerg ``__cpp_lib_node_extract`` ``201606L``
132 1.1 joerg ------------------------------------------------- -----------------
133 1.1 joerg ``__cpp_lib_nonmember_container_access`` ``201411L``
134 1.1 joerg ------------------------------------------------- -----------------
135 1.1 joerg ``__cpp_lib_not_fn`` ``201603L``
136 1.1 joerg ------------------------------------------------- -----------------
137 1.1 joerg ``__cpp_lib_optional`` ``201606L``
138 1.1 joerg ------------------------------------------------- -----------------
139 1.1 joerg ``__cpp_lib_parallel_algorithm`` *unimplemented*
140 1.1 joerg ------------------------------------------------- -----------------
141 1.1 joerg ``__cpp_lib_raw_memory_algorithms`` ``201606L``
142 1.1 joerg ------------------------------------------------- -----------------
143 1.1 joerg ``__cpp_lib_sample`` ``201603L``
144 1.1 joerg ------------------------------------------------- -----------------
145 1.1 joerg ``__cpp_lib_scoped_lock`` ``201703L``
146 1.1 joerg ------------------------------------------------- -----------------
147 1.1 joerg ``__cpp_lib_shared_mutex`` ``201505L``
148 1.1 joerg ------------------------------------------------- -----------------
149 1.1 joerg ``__cpp_lib_shared_ptr_arrays`` ``201611L``
150 1.1 joerg ------------------------------------------------- -----------------
151 1.1 joerg ``__cpp_lib_shared_ptr_weak_type`` ``201606L``
152 1.1 joerg ------------------------------------------------- -----------------
153 1.1 joerg ``__cpp_lib_string_view`` ``201606L``
154 1.1 joerg ------------------------------------------------- -----------------
155 1.1 joerg ``__cpp_lib_to_chars`` *unimplemented*
156 1.1 joerg ------------------------------------------------- -----------------
157 1.1 joerg ``__cpp_lib_transparent_operators`` ``201510L``
158 1.1 joerg ------------------------------------------------- -----------------
159 1.1 joerg ``__cpp_lib_type_trait_variable_templates`` ``201510L``
160 1.1 joerg ------------------------------------------------- -----------------
161 1.1 joerg ``__cpp_lib_uncaught_exceptions`` ``201411L``
162 1.1 joerg ------------------------------------------------- -----------------
163 1.1 joerg ``__cpp_lib_unordered_map_try_emplace`` ``201411L``
164 1.1 joerg ------------------------------------------------- -----------------
165 1.1 joerg ``__cpp_lib_variant`` ``202102L``
166 1.1 joerg ------------------------------------------------- -----------------
167 1.1 joerg ``__cpp_lib_void_t`` ``201411L``
168 1.1 joerg ------------------------------------------------- -----------------
169 1.1 joerg **C++ 20**
170 1.1 joerg -------------------------------------------------------------------
171 1.1 joerg ``__cpp_lib_array_constexpr`` ``201811L``
172 1.1 joerg ------------------------------------------------- -----------------
173 1.1 joerg ``__cpp_lib_assume_aligned`` *unimplemented*
174 1.1 joerg ------------------------------------------------- -----------------
175 1.1 joerg ``__cpp_lib_atomic_flag_test`` ``201907L``
176 1.1 joerg ------------------------------------------------- -----------------
177 1.1 joerg ``__cpp_lib_atomic_float`` *unimplemented*
178 1.1 joerg ------------------------------------------------- -----------------
179 1.1 joerg ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
180 1.1 joerg ------------------------------------------------- -----------------
181 1.1 joerg ``__cpp_lib_atomic_ref`` *unimplemented*
182 1.1 joerg ------------------------------------------------- -----------------
183 1.1 joerg ``__cpp_lib_atomic_shared_ptr`` *unimplemented*
184 1.1 joerg ------------------------------------------------- -----------------
185 1.1 joerg ``__cpp_lib_atomic_value_initialization`` *unimplemented*
186 1.1 joerg ------------------------------------------------- -----------------
187 1.1 joerg ``__cpp_lib_atomic_wait`` ``201907L``
188 1.1 joerg ------------------------------------------------- -----------------
189 1.1 joerg ``__cpp_lib_barrier`` ``201907L``
190 1.1 joerg ------------------------------------------------- -----------------
191 1.1 joerg ``__cpp_lib_bind_front`` ``201907L``
192 1.1 joerg ------------------------------------------------- -----------------
193 1.1 joerg ``__cpp_lib_bit_cast`` *unimplemented*
194 1.1 joerg ------------------------------------------------- -----------------
195 1.1 joerg ``__cpp_lib_bitops`` *unimplemented*
196 1.1 joerg ------------------------------------------------- -----------------
197 1.1 joerg ``__cpp_lib_bounded_array_traits`` ``201902L``
198 1.1 joerg ------------------------------------------------- -----------------
199 1.1 joerg ``__cpp_lib_char8_t`` ``201811L``
200 1.1 joerg ------------------------------------------------- -----------------
201 1.1 joerg ``__cpp_lib_concepts`` ``202002L``
202 1.1 joerg ------------------------------------------------- -----------------
203 1.1 joerg ``__cpp_lib_constexpr_algorithms`` ``201806L``
204 1.1 joerg ------------------------------------------------- -----------------
205 1.1 joerg ``__cpp_lib_constexpr_complex`` *unimplemented*
206 1.1 joerg ------------------------------------------------- -----------------
207 1.1 joerg ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L``
208 1.1 joerg ------------------------------------------------- -----------------
209 1.1 joerg ``__cpp_lib_constexpr_functional`` ``201907L``
210 1.1 joerg ------------------------------------------------- -----------------
211 1.1 joerg ``__cpp_lib_constexpr_iterator`` ``201811L``
212 1.1 joerg ------------------------------------------------- -----------------
213 1.1 joerg ``__cpp_lib_constexpr_memory`` ``201811L``
214 1.1 joerg ------------------------------------------------- -----------------
215 1.1 joerg ``__cpp_lib_constexpr_numeric`` ``201911L``
216 1.1 joerg ------------------------------------------------- -----------------
217 1.1 joerg ``__cpp_lib_constexpr_string`` ``201811L``
218 1.1 joerg ------------------------------------------------- -----------------
219 1.1 joerg ``__cpp_lib_constexpr_string_view`` ``201811L``
220 1.1 joerg ------------------------------------------------- -----------------
221 1.1 joerg ``__cpp_lib_constexpr_tuple`` ``201811L``
222 1.1 joerg ------------------------------------------------- -----------------
223 1.1 joerg ``__cpp_lib_constexpr_utility`` ``201811L``
224 1.1 joerg ------------------------------------------------- -----------------
225 1.1 joerg ``__cpp_lib_constexpr_vector`` *unimplemented*
226 1.1 joerg ------------------------------------------------- -----------------
227 1.1 joerg ``__cpp_lib_coroutine`` *unimplemented*
228 1.1 joerg ------------------------------------------------- -----------------
229 1.1 joerg ``__cpp_lib_destroying_delete`` ``201806L``
230 1.1 joerg ------------------------------------------------- -----------------
231 1.1 joerg ``__cpp_lib_endian`` ``201907L``
232 1.1 joerg ------------------------------------------------- -----------------
233 1.1 joerg ``__cpp_lib_erase_if`` ``202002L``
234 1.1 joerg ------------------------------------------------- -----------------
235 1.1 joerg ``__cpp_lib_execution`` *unimplemented*
236 1.1 joerg ------------------------------------------------- -----------------
237 1.1 joerg ``__cpp_lib_format`` *unimplemented*
238 1.1 joerg ------------------------------------------------- -----------------
239 1.1 joerg ``__cpp_lib_generic_unordered_lookup`` ``201811L``
240 1.1 joerg ------------------------------------------------- -----------------
241 1.1 joerg ``__cpp_lib_int_pow2`` ``202002L``
242 1.1 joerg ------------------------------------------------- -----------------
243 1.1 joerg ``__cpp_lib_integer_comparison_functions`` ``202002L``
244 1.1 joerg ------------------------------------------------- -----------------
245 1.1 joerg ``__cpp_lib_interpolate`` ``201902L``
246 1.1 joerg ------------------------------------------------- -----------------
247 1.1 joerg ``__cpp_lib_is_constant_evaluated`` ``201811L``
248 1.1 joerg ------------------------------------------------- -----------------
249 1.1 joerg ``__cpp_lib_is_layout_compatible`` *unimplemented*
250 1.1 joerg ------------------------------------------------- -----------------
251 1.1 joerg ``__cpp_lib_is_nothrow_convertible`` ``201806L``
252 1.1 joerg ------------------------------------------------- -----------------
253 1.1 joerg ``__cpp_lib_is_pointer_interconvertible`` *unimplemented*
254 1.1 joerg ------------------------------------------------- -----------------
255 1.1 joerg ``__cpp_lib_jthread`` *unimplemented*
256 1.1 joerg ------------------------------------------------- -----------------
257 1.1 joerg ``__cpp_lib_latch`` ``201907L``
258 1.1 joerg ------------------------------------------------- -----------------
259 1.1 joerg ``__cpp_lib_list_remove_return_type`` ``201806L``
260 1.1 joerg ------------------------------------------------- -----------------
261 1.1 joerg ``__cpp_lib_math_constants`` ``201907L``
262 1.1 joerg ------------------------------------------------- -----------------
263 1.1 joerg ``__cpp_lib_polymorphic_allocator`` *unimplemented*
264 1.1 joerg ------------------------------------------------- -----------------
265 1.1 joerg ``__cpp_lib_ranges`` *unimplemented*
266 1.1 joerg ------------------------------------------------- -----------------
267 1.1 joerg ``__cpp_lib_remove_cvref`` ``201711L``
268 1.1 joerg ------------------------------------------------- -----------------
269 1.1 joerg ``__cpp_lib_semaphore`` ``201907L``
270 1.1 joerg ------------------------------------------------- -----------------
271 1.1 joerg ``__cpp_lib_shift`` ``201806L``
272 1.1 joerg ------------------------------------------------- -----------------
273 1.1 joerg ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented*
274 1.1 joerg ------------------------------------------------- -----------------
275 1.1 joerg ``__cpp_lib_source_location`` *unimplemented*
276 1.1 joerg ------------------------------------------------- -----------------
277 1.1 joerg ``__cpp_lib_span`` ``202002L``
278 1.1 joerg ------------------------------------------------- -----------------
279 1.1 joerg ``__cpp_lib_ssize`` ``201902L``
280 1.1 joerg ------------------------------------------------- -----------------
281 1.1 joerg ``__cpp_lib_starts_ends_with`` ``201711L``
282 1.1 joerg ------------------------------------------------- -----------------
283 1.1 joerg ``__cpp_lib_string_view`` ``201803L``
284 1.1 joerg ------------------------------------------------- -----------------
285 1.1 joerg ``__cpp_lib_syncbuf`` *unimplemented*
286 1.1 joerg ------------------------------------------------- -----------------
287 1.1 joerg ``__cpp_lib_three_way_comparison`` *unimplemented*
288 1.1 joerg ------------------------------------------------- -----------------
289 1.1 joerg ``__cpp_lib_to_address`` ``201711L``
290 1.1 joerg ------------------------------------------------- -----------------
291 1.1 joerg ``__cpp_lib_to_array`` ``201907L``
292 1.1 joerg ------------------------------------------------- -----------------
293 1.1 joerg ``__cpp_lib_unwrap_ref`` ``201811L``
294 1.1 joerg ------------------------------------------------- -----------------
295 1.1 joerg **C++ 2b**
296 1.1 joerg -------------------------------------------------------------------
297 1.1 joerg ``__cpp_lib_is_scoped_enum`` ``202011L``
298 1.1 joerg ------------------------------------------------- -----------------
299 1.1 joerg ``__cpp_lib_stacktrace`` *unimplemented*
300 1.1 joerg ------------------------------------------------- -----------------
301 1.1 joerg ``__cpp_lib_stdatomic_h`` *unimplemented*
302 1.1 joerg ------------------------------------------------- -----------------
303 1.1 joerg ``__cpp_lib_string_contains`` ``202011L``
304 1.1 joerg ------------------------------------------------- -----------------
305 1.1 joerg ``__cpp_lib_to_underlying`` ``202102L``
306 1.1 joerg ================================================= =================
307 1.1 joerg
308