aboutsummaryrefslogtreecommitdiff
path: root/libcxx/docs/FeatureTestMacroTable.rst
blob: 9aa183aff9fc5ff3a27a6413ced40c2b07a0351d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
.. _FeatureTestMacroTable:

==========================
Feature Test Macro Support
==========================

.. contents::
   :local:

Overview
========

This file documents the feature test macros currently supported by libc++.

.. _feature-status:

Status
======

.. table:: Current Status
    :name: feature-status-table
    :widths: auto

    ================================================= =================
    Macro Name                                        Value
    ================================================= =================
    **C++ 14**
    -------------------------------------------------------------------
    ``__cpp_lib_chrono_udls``                         ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_complex_udls``                        ``201309L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_exchange_function``                   ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_generic_associative_lookup``          ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_integer_sequence``                    ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_integral_constant_callable``          ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_final``                            ``201402L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_null_pointer``                     ``201309L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_make_reverse_iterator``               ``201402L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_make_unique``                         ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_null_iterators``                      ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_quoted_string_io``                    ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_result_of_sfinae``                    ``201210L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_robust_nonmodifying_seq_ops``         ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shared_timed_mutex``                  ``201402L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_string_udls``                         ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_transformation_trait_aliases``        ``201304L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_transparent_operators``               ``201210L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_tuple_element_t``                     ``201402L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_tuples_by_type``                      ``201304L``
    ------------------------------------------------- -----------------
    **C++ 17**
    -------------------------------------------------------------------
    ``__cpp_lib_addressof_constexpr``                 ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_allocator_traits_is_always_equal``    ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_any``                                 ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_apply``                               ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_array_constexpr``                     ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_as_const``                            ``201510L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_is_always_lock_free``          ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_bool_constant``                       ``201505L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_boyer_moore_searcher``                ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_byte``                                ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_chrono``                              ``201611L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_clamp``                               ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_enable_shared_from_this``             ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_execution``                           *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_filesystem``                          ``201703L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_gcd_lcm``                             ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_hardware_interference_size``          ``201703L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_has_unique_object_representations``   ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_hypot``                               ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_incomplete_container_elements``       ``201505L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_invoke``                              ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_aggregate``                        ``201703L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_invocable``                        ``201703L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_swappable``                        ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_launder``                             ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_logical_traits``                      ``201510L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_make_from_tuple``                     ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_map_try_emplace``                     ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_math_special_functions``              *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_memory_resource``                     *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_node_extract``                        ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_nonmember_container_access``          ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_not_fn``                              ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_optional``                            ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_parallel_algorithm``                  *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_raw_memory_algorithms``               ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_sample``                              ``201603L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_scoped_lock``                         ``201703L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shared_mutex``                        ``201505L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shared_ptr_arrays``                   ``201611L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shared_ptr_weak_type``                ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_string_view``                         ``201606L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_to_chars``                            *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_transparent_operators``               ``201510L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_type_trait_variable_templates``       ``201510L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_uncaught_exceptions``                 ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_unordered_map_try_emplace``           ``201411L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_variant``                             ``202102L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_void_t``                              ``201411L``
    ------------------------------------------------- -----------------
    **C++ 20**
    -------------------------------------------------------------------
    ``__cpp_lib_array_constexpr``                     ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_assume_aligned``                      ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_flag_test``                    ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_float``                        *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_lock_free_type_aliases``       ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_ref``                          *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_shared_ptr``                   *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_value_initialization``         ``201911L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_atomic_wait``                         ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_barrier``                             ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_bind_front``                          ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_bit_cast``                            ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_bitops``                              *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_bounded_array_traits``                ``201902L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_char8_t``                             ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_concepts``                            ``202002L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_algorithms``                ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_complex``                   *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_dynamic_alloc``             ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_functional``                ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_iterator``                  ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_memory``                    ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_numeric``                   ``201911L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_string``                    ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_string_view``               ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_tuple``                     ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_utility``                   ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_vector``                    *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_coroutine``                           ``201902L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_destroying_delete``                   ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_endian``                              ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_erase_if``                            ``202002L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_execution``                           *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_format``                              ``202106L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_generic_unordered_lookup``            ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_int_pow2``                            ``202002L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_integer_comparison_functions``        ``202002L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_interpolate``                         ``201902L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_constant_evaluated``               ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_layout_compatible``                *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_nothrow_convertible``              ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_pointer_interconvertible``         *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_jthread``                             *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_latch``                               ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_list_remove_return_type``             ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_math_constants``                      ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_polymorphic_allocator``               *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges``                              *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_remove_cvref``                        ``201711L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_semaphore``                           ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shared_ptr_arrays``                   ``201707L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_shift``                               ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_smart_ptr_for_overwrite``             *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_source_location``                     *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_span``                                ``202002L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_ssize``                               ``201902L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_starts_ends_with``                    ``201711L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_string_view``                         ``201803L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_syncbuf``                             *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_three_way_comparison``                *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_to_address``                          ``201711L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_to_array``                            ``201907L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_type_identity``                       ``201806L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_unwrap_ref``                          ``201811L``
    ------------------------------------------------- -----------------
    **C++ 2b**
    -------------------------------------------------------------------
    ``__cpp_lib_adaptor_iterator_pair_constructor``   ``202106L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_allocate_at_least``                   ``202106L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_associative_heterogeneous_erasure``   *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_bind_back``                           *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_byteswap``                            ``202110L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_cmath``                     *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_typeinfo``                  *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_invoke_r``                            *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_is_scoped_enum``                      ``202011L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_move_only_function``                  *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_optional``                            ``202110L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_out_ptr``                             *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_chunk``                        *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_chunk_by``                     *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_iota``                         *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_join_with``                    *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_slide``                        *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_starts_ends_with``             *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_to_container``                 *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_ranges_zip``                          *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_reference_from_temporary``            *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_spanstream``                          *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_stacktrace``                          *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_stdatomic_h``                         ``202011L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_string_contains``                     ``202011L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_string_resize_and_overwrite``         ``202110L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_to_underlying``                       ``202102L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_unreachable``                         ``202202L``
    ================================================= =================