[AST] Use APIntStorage to fix memory leak in EnumConstantDecl. (#78311)
[llvm-project.git] / libcxx / docs / FeatureTestMacroTable.rst
blob893a3b13ca06e022412acedc393bb8e1a11c3090
1 .. _FeatureTestMacroTable:
3 ==========================
4 Feature Test Macro Support
5 ==========================
7 .. contents::
8    :local:
10 Overview
11 ========
13 This file documents the feature test macros currently supported by libc++.
15 .. _feature-status:
17 Status
18 ======
20 .. table:: Current Status
21     :name: feature-status-table
22     :widths: auto
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``                  ``201603L``
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``            ``201703L``
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``                       ``201603L``
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``                               ``202102L``
166     --------------------------------------------------- -----------------
167     ``__cpp_lib_void_t``                                ``201411L``
168     --------------------------------------------------- -----------------
169     **C++ 20**
170     ---------------------------------------------------------------------
171     ``__cpp_lib_array_constexpr``                       ``201811L``
172     --------------------------------------------------- -----------------
173     ``__cpp_lib_assume_aligned``                        ``201811L``
174     --------------------------------------------------- -----------------
175     ``__cpp_lib_atomic_flag_test``                      ``201907L``
176     --------------------------------------------------- -----------------
177     ``__cpp_lib_atomic_float``                          *unimplemented*
178     --------------------------------------------------- -----------------
179     ``__cpp_lib_atomic_lock_free_type_aliases``         ``201907L``
180     --------------------------------------------------- -----------------
181     ``__cpp_lib_atomic_ref``                            *unimplemented*
182     --------------------------------------------------- -----------------
183     ``__cpp_lib_atomic_shared_ptr``                     *unimplemented*
184     --------------------------------------------------- -----------------
185     ``__cpp_lib_atomic_value_initialization``           ``201911L``
186     --------------------------------------------------- -----------------
187     ``__cpp_lib_atomic_wait``                           ``201907L``
188     --------------------------------------------------- -----------------
189     ``__cpp_lib_barrier``                               ``201907L``
190     --------------------------------------------------- -----------------
191     ``__cpp_lib_bind_front``                            ``201907L``
192     --------------------------------------------------- -----------------
193     ``__cpp_lib_bit_cast``                              ``201806L``
194     --------------------------------------------------- -----------------
195     ``__cpp_lib_bitops``                                ``201907L``
196     --------------------------------------------------- -----------------
197     ``__cpp_lib_bounded_array_traits``                  ``201902L``
198     --------------------------------------------------- -----------------
199     ``__cpp_lib_char8_t``                               ``201907L``
200     --------------------------------------------------- -----------------
201     ``__cpp_lib_concepts``                              ``202002L``
202     --------------------------------------------------- -----------------
203     ``__cpp_lib_constexpr_algorithms``                  ``201806L``
204     --------------------------------------------------- -----------------
205     ``__cpp_lib_constexpr_complex``                     ``201711L``
206     --------------------------------------------------- -----------------
207     ``__cpp_lib_constexpr_dynamic_alloc``               ``201907L``
208     --------------------------------------------------- -----------------
209     ``__cpp_lib_constexpr_functional``                  ``201907L``
210     --------------------------------------------------- -----------------
211     ``__cpp_lib_constexpr_iterator``                    ``201811L``
212     --------------------------------------------------- -----------------
213     ``__cpp_lib_constexpr_memory``                      ``201811L``
214     --------------------------------------------------- -----------------
215     ``__cpp_lib_constexpr_numeric``                     ``201911L``
216     --------------------------------------------------- -----------------
217     ``__cpp_lib_constexpr_string``                      ``201907L``
218     --------------------------------------------------- -----------------
219     ``__cpp_lib_constexpr_string_view``                 ``201811L``
220     --------------------------------------------------- -----------------
221     ``__cpp_lib_constexpr_tuple``                       ``201811L``
222     --------------------------------------------------- -----------------
223     ``__cpp_lib_constexpr_utility``                     ``201811L``
224     --------------------------------------------------- -----------------
225     ``__cpp_lib_constexpr_vector``                      ``201907L``
226     --------------------------------------------------- -----------------
227     ``__cpp_lib_coroutine``                             ``201902L``
228     --------------------------------------------------- -----------------
229     ``__cpp_lib_destroying_delete``                     ``201806L``
230     --------------------------------------------------- -----------------
231     ``__cpp_lib_endian``                                ``201907L``
232     --------------------------------------------------- -----------------
233     ``__cpp_lib_erase_if``                              ``202002L``
234     --------------------------------------------------- -----------------
235     ``__cpp_lib_execution``                             *unimplemented*
236     --------------------------------------------------- -----------------
237     ``__cpp_lib_format``                                *unimplemented*
238     --------------------------------------------------- -----------------
239     ``__cpp_lib_format_uchar``                          ``202311L``
240     --------------------------------------------------- -----------------
241     ``__cpp_lib_generic_unordered_lookup``              ``201811L``
242     --------------------------------------------------- -----------------
243     ``__cpp_lib_int_pow2``                              ``202002L``
244     --------------------------------------------------- -----------------
245     ``__cpp_lib_integer_comparison_functions``          ``202002L``
246     --------------------------------------------------- -----------------
247     ``__cpp_lib_interpolate``                           ``201902L``
248     --------------------------------------------------- -----------------
249     ``__cpp_lib_is_constant_evaluated``                 ``201811L``
250     --------------------------------------------------- -----------------
251     ``__cpp_lib_is_layout_compatible``                  *unimplemented*
252     --------------------------------------------------- -----------------
253     ``__cpp_lib_is_nothrow_convertible``                ``201806L``
254     --------------------------------------------------- -----------------
255     ``__cpp_lib_is_pointer_interconvertible``           *unimplemented*
256     --------------------------------------------------- -----------------
257     ``__cpp_lib_jthread``                               ``201911L``
258     --------------------------------------------------- -----------------
259     ``__cpp_lib_latch``                                 ``201907L``
260     --------------------------------------------------- -----------------
261     ``__cpp_lib_list_remove_return_type``               ``201806L``
262     --------------------------------------------------- -----------------
263     ``__cpp_lib_math_constants``                        ``201907L``
264     --------------------------------------------------- -----------------
265     ``__cpp_lib_move_iterator_concept``                 ``202207L``
266     --------------------------------------------------- -----------------
267     ``__cpp_lib_polymorphic_allocator``                 ``201902L``
268     --------------------------------------------------- -----------------
269     ``__cpp_lib_ranges``                                ``202207L``
270     --------------------------------------------------- -----------------
271     ``__cpp_lib_remove_cvref``                          ``201711L``
272     --------------------------------------------------- -----------------
273     ``__cpp_lib_semaphore``                             ``201907L``
274     --------------------------------------------------- -----------------
275     ``__cpp_lib_shared_ptr_arrays``                     ``201707L``
276     --------------------------------------------------- -----------------
277     ``__cpp_lib_shift``                                 ``201806L``
278     --------------------------------------------------- -----------------
279     ``__cpp_lib_smart_ptr_for_overwrite``               *unimplemented*
280     --------------------------------------------------- -----------------
281     ``__cpp_lib_source_location``                       ``201907L``
282     --------------------------------------------------- -----------------
283     ``__cpp_lib_span``                                  ``202002L``
284     --------------------------------------------------- -----------------
285     ``__cpp_lib_ssize``                                 ``201902L``
286     --------------------------------------------------- -----------------
287     ``__cpp_lib_starts_ends_with``                      ``201711L``
288     --------------------------------------------------- -----------------
289     ``__cpp_lib_string_view``                           ``201803L``
290     --------------------------------------------------- -----------------
291     ``__cpp_lib_syncbuf``                               ``201803L``
292     --------------------------------------------------- -----------------
293     ``__cpp_lib_three_way_comparison``                  *unimplemented*
294     --------------------------------------------------- -----------------
295     ``__cpp_lib_to_address``                            ``201711L``
296     --------------------------------------------------- -----------------
297     ``__cpp_lib_to_array``                              ``201907L``
298     --------------------------------------------------- -----------------
299     ``__cpp_lib_type_identity``                         ``201806L``
300     --------------------------------------------------- -----------------
301     ``__cpp_lib_unwrap_ref``                            ``201811L``
302     --------------------------------------------------- -----------------
303     **C++ 23**
304     ---------------------------------------------------------------------
305     ``__cpp_lib_adaptor_iterator_pair_constructor``     ``202106L``
306     --------------------------------------------------- -----------------
307     ``__cpp_lib_allocate_at_least``                     ``202106L``
308     --------------------------------------------------- -----------------
309     ``__cpp_lib_associative_heterogeneous_erasure``     *unimplemented*
310     --------------------------------------------------- -----------------
311     ``__cpp_lib_bind_back``                             *unimplemented*
312     --------------------------------------------------- -----------------
313     ``__cpp_lib_byteswap``                              ``202110L``
314     --------------------------------------------------- -----------------
315     ``__cpp_lib_constexpr_bitset``                      ``202207L``
316     --------------------------------------------------- -----------------
317     ``__cpp_lib_constexpr_charconv``                    ``202207L``
318     --------------------------------------------------- -----------------
319     ``__cpp_lib_constexpr_cmath``                       *unimplemented*
320     --------------------------------------------------- -----------------
321     ``__cpp_lib_constexpr_memory``                      ``202202L``
322     --------------------------------------------------- -----------------
323     ``__cpp_lib_constexpr_typeinfo``                    ``202106L``
324     --------------------------------------------------- -----------------
325     ``__cpp_lib_expected``                              ``202211L``
326     --------------------------------------------------- -----------------
327     ``__cpp_lib_format_ranges``                         ``202207L``
328     --------------------------------------------------- -----------------
329     ``__cpp_lib_formatters``                            *unimplemented*
330     --------------------------------------------------- -----------------
331     ``__cpp_lib_forward_like``                          ``202207L``
332     --------------------------------------------------- -----------------
333     ``__cpp_lib_invoke_r``                              ``202106L``
334     --------------------------------------------------- -----------------
335     ``__cpp_lib_ios_noreplace``                         ``202207L``
336     --------------------------------------------------- -----------------
337     ``__cpp_lib_is_scoped_enum``                        ``202011L``
338     --------------------------------------------------- -----------------
339     ``__cpp_lib_mdspan``                                ``202207L``
340     --------------------------------------------------- -----------------
341     ``__cpp_lib_move_only_function``                    *unimplemented*
342     --------------------------------------------------- -----------------
343     ``__cpp_lib_optional``                              ``202110L``
344     --------------------------------------------------- -----------------
345     ``__cpp_lib_out_ptr``                               *unimplemented*
346     --------------------------------------------------- -----------------
347     ``__cpp_lib_print``                                 ``202207L``
348     --------------------------------------------------- -----------------
349     ``__cpp_lib_ranges_as_const``                       *unimplemented*
350     --------------------------------------------------- -----------------
351     ``__cpp_lib_ranges_as_rvalue``                      ``202207L``
352     --------------------------------------------------- -----------------
353     ``__cpp_lib_ranges_chunk``                          *unimplemented*
354     --------------------------------------------------- -----------------
355     ``__cpp_lib_ranges_chunk_by``                       ``202202L``
356     --------------------------------------------------- -----------------
357     ``__cpp_lib_ranges_iota``                           *unimplemented*
358     --------------------------------------------------- -----------------
359     ``__cpp_lib_ranges_join_with``                      *unimplemented*
360     --------------------------------------------------- -----------------
361     ``__cpp_lib_ranges_repeat``                         ``202207L``
362     --------------------------------------------------- -----------------
363     ``__cpp_lib_ranges_slide``                          *unimplemented*
364     --------------------------------------------------- -----------------
365     ``__cpp_lib_ranges_starts_ends_with``               *unimplemented*
366     --------------------------------------------------- -----------------
367     ``__cpp_lib_ranges_to_container``                   ``202202L``
368     --------------------------------------------------- -----------------
369     ``__cpp_lib_ranges_zip``                            *unimplemented*
370     --------------------------------------------------- -----------------
371     ``__cpp_lib_reference_from_temporary``              *unimplemented*
372     --------------------------------------------------- -----------------
373     ``__cpp_lib_spanstream``                            *unimplemented*
374     --------------------------------------------------- -----------------
375     ``__cpp_lib_stacktrace``                            *unimplemented*
376     --------------------------------------------------- -----------------
377     ``__cpp_lib_stdatomic_h``                           ``202011L``
378     --------------------------------------------------- -----------------
379     ``__cpp_lib_string_contains``                       ``202011L``
380     --------------------------------------------------- -----------------
381     ``__cpp_lib_string_resize_and_overwrite``           ``202110L``
382     --------------------------------------------------- -----------------
383     ``__cpp_lib_to_string``                             *unimplemented*
384     --------------------------------------------------- -----------------
385     ``__cpp_lib_to_underlying``                         ``202102L``
386     --------------------------------------------------- -----------------
387     ``__cpp_lib_tuple_like``                            *unimplemented*
388     --------------------------------------------------- -----------------
389     ``__cpp_lib_unreachable``                           ``202202L``
390     --------------------------------------------------- -----------------
391     **C++ 26**
392     ---------------------------------------------------------------------
393     ``__cpp_lib_associative_heterogeneous_insertion``   *unimplemented*
394     --------------------------------------------------- -----------------
395     ``__cpp_lib_bind_back``                             *unimplemented*
396     --------------------------------------------------- -----------------
397     ``__cpp_lib_bind_front``                            ``202306L``
398     --------------------------------------------------- -----------------
399     ``__cpp_lib_bitset``                                ``202306L``
400     --------------------------------------------------- -----------------
401     ``__cpp_lib_copyable_function``                     *unimplemented*
402     --------------------------------------------------- -----------------
403     ``__cpp_lib_debugging``                             *unimplemented*
404     --------------------------------------------------- -----------------
405     ``__cpp_lib_freestanding_algorithm``                *unimplemented*
406     --------------------------------------------------- -----------------
407     ``__cpp_lib_freestanding_array``                    *unimplemented*
408     --------------------------------------------------- -----------------
409     ``__cpp_lib_freestanding_cstring``                  *unimplemented*
410     --------------------------------------------------- -----------------
411     ``__cpp_lib_freestanding_expected``                 *unimplemented*
412     --------------------------------------------------- -----------------
413     ``__cpp_lib_freestanding_mdspan``                   *unimplemented*
414     --------------------------------------------------- -----------------
415     ``__cpp_lib_freestanding_optional``                 *unimplemented*
416     --------------------------------------------------- -----------------
417     ``__cpp_lib_freestanding_string_view``              *unimplemented*
418     --------------------------------------------------- -----------------
419     ``__cpp_lib_freestanding_variant``                  *unimplemented*
420     --------------------------------------------------- -----------------
421     ``__cpp_lib_fstream_native_handle``                 ``202306L``
422     --------------------------------------------------- -----------------
423     ``__cpp_lib_function_ref``                          *unimplemented*
424     --------------------------------------------------- -----------------
425     ``__cpp_lib_hazard_pointer``                        *unimplemented*
426     --------------------------------------------------- -----------------
427     ``__cpp_lib_linalg``                                *unimplemented*
428     --------------------------------------------------- -----------------
429     ``__cpp_lib_out_ptr``                               *unimplemented*
430     --------------------------------------------------- -----------------
431     ``__cpp_lib_ratio``                                 ``202306L``
432     --------------------------------------------------- -----------------
433     ``__cpp_lib_rcu``                                   *unimplemented*
434     --------------------------------------------------- -----------------
435     ``__cpp_lib_saturation_arithmetic``                 *unimplemented*
436     --------------------------------------------------- -----------------
437     ``__cpp_lib_smart_ptr_owner_equality``              *unimplemented*
438     --------------------------------------------------- -----------------
439     ``__cpp_lib_span_at``                               ``202311L``
440     --------------------------------------------------- -----------------
441     ``__cpp_lib_span_initializer_list``                 *unimplemented*
442     --------------------------------------------------- -----------------
443     ``__cpp_lib_sstream_from_string_view``              *unimplemented*
444     --------------------------------------------------- -----------------
445     ``__cpp_lib_submdspan``                             *unimplemented*
446     --------------------------------------------------- -----------------
447     ``__cpp_lib_text_encoding``                         *unimplemented*
448     --------------------------------------------------- -----------------
449     ``__cpp_lib_to_chars``                              *unimplemented*
450     --------------------------------------------------- -----------------
451     ``__cpp_lib_tuple_like``                            *unimplemented*
452     --------------------------------------------------- -----------------
453     ``__cpp_lib_within_lifetime``                       *unimplemented*
454     =================================================== =================