blob: 2200a998aa4a111e65326b65a8c71436eeb82d73 [file] [log] [blame]
Eric Fiselier4e860492019-01-16 01:37:43 +00001.. _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 ------------------------------------------------- -----------------
Eric Fiselier02a8a2c2019-05-23 23:46:44 +0000185 ``__cpp_lib_destroying_delete`` ``201806L``
Eric Fiselier4e860492019-01-16 01:37:43 +0000186 ------------------------------------------------- -----------------
187 ``__cpp_lib_erase_if`` ``201811L``
188 ------------------------------------------------- -----------------
189 ``__cpp_lib_generic_unordered_lookup`` *unimplemented*
190 ------------------------------------------------- -----------------
Marshall Clow174901e2019-04-25 12:11:43 +0000191 ``__cpp_lib_interpolate`` ``201902L``
192 ------------------------------------------------- -----------------
Eric Fiselier5afe0992019-04-24 17:54:25 +0000193 ``__cpp_lib_is_constant_evaluated`` ``201811L``
Eric Fiselier4e860492019-01-16 01:37:43 +0000194 ------------------------------------------------- -----------------
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