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``          ``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``                     *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    ------------------------------------------------- -----------------
169    **C++ 2a**
170    -------------------------------------------------------------------
171    ``__cpp_lib_atomic_ref``                          *unimplemented*
172    ------------------------------------------------- -----------------
173    ``__cpp_lib_bind_front``                          *unimplemented*
174    ------------------------------------------------- -----------------
175    ``__cpp_lib_bit_cast``                            *unimplemented*
176    ------------------------------------------------- -----------------
177    ``__cpp_lib_char8_t``                             ``201811L``
178    ------------------------------------------------- -----------------
179    ``__cpp_lib_concepts``                            *unimplemented*
180    ------------------------------------------------- -----------------
181    ``__cpp_lib_constexpr_misc``                      *unimplemented*
182    ------------------------------------------------- -----------------
183    ``__cpp_lib_constexpr_swap_algorithms``           *unimplemented*
184    ------------------------------------------------- -----------------
185    ``__cpp_lib_destroying_delete``                   ``201806L``
186    ------------------------------------------------- -----------------
187    ``__cpp_lib_erase_if``                            ``201811L``
188    ------------------------------------------------- -----------------
189    ``__cpp_lib_generic_unordered_lookup``            *unimplemented*
190    ------------------------------------------------- -----------------
191    ``__cpp_lib_interpolate``                         ``201902L``
192    ------------------------------------------------- -----------------
193    ``__cpp_lib_is_constant_evaluated``               ``201811L``
194    ------------------------------------------------- -----------------
195    ``__cpp_lib_list_remove_return_type``             *unimplemented*
196    ------------------------------------------------- -----------------
197    ``__cpp_lib_ranges``                              *unimplemented*
198    ------------------------------------------------- -----------------
199    ``__cpp_lib_three_way_comparison``                *unimplemented*
200    ================================================= =================
201
202
203