2 //===----------------------------------------------------------------------===//
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
10 export namespace std {
11 // [meta.help], helper class
12 using std::integral_constant;
14 using std::bool_constant;
15 using std::false_type;
18 // [meta.unary.cat], primary type categories
22 using std::is_floating_point;
23 using std::is_function;
24 using std::is_integral;
25 using std::is_lvalue_reference;
26 using std::is_member_function_pointer;
27 using std::is_member_object_pointer;
28 using std::is_null_pointer;
29 using std::is_pointer;
30 using std::is_rvalue_reference;
34 // [meta.unary.comp], composite type categories
35 using std::is_arithmetic;
36 using std::is_compound;
37 using std::is_fundamental;
38 using std::is_member_pointer;
40 using std::is_reference;
43 // [meta.unary.prop], type properties
44 using std::is_abstract;
45 using std::is_aggregate;
49 using std::is_polymorphic;
50 using std::is_standard_layout;
51 using std::is_trivial;
52 using std::is_trivially_copyable;
53 using std::is_volatile;
55 using std::is_bounded_array;
56 #if _LIBCPP_STD_VER >= 23
57 using std::is_scoped_enum;
60 using std::is_unbounded_array;
61 using std::is_unsigned;
63 using std::is_constructible;
64 using std::is_copy_constructible;
65 using std::is_default_constructible;
66 using std::is_move_constructible;
68 using std::is_assignable;
69 using std::is_copy_assignable;
70 using std::is_move_assignable;
72 using std::is_swappable;
73 using std::is_swappable_with;
75 using std::is_destructible;
77 using std::is_trivially_constructible;
78 using std::is_trivially_copy_constructible;
79 using std::is_trivially_default_constructible;
80 using std::is_trivially_move_constructible;
82 using std::is_trivially_assignable;
83 using std::is_trivially_copy_assignable;
84 using std::is_trivially_destructible;
85 using std::is_trivially_move_assignable;
87 using std::is_nothrow_constructible;
88 using std::is_nothrow_copy_constructible;
89 using std::is_nothrow_default_constructible;
90 using std::is_nothrow_move_constructible;
92 using std::is_nothrow_assignable;
93 using std::is_nothrow_copy_assignable;
94 using std::is_nothrow_move_assignable;
96 using std::is_nothrow_swappable;
97 using std::is_nothrow_swappable_with;
99 using std::is_nothrow_destructible;
101 #if _LIBCPP_STD_VER >= 23 && __has_builtin(__builtin_is_implicit_lifetime)
102 using std::is_implicit_lifetime;
105 using std::has_virtual_destructor;
107 using std::has_unique_object_representations;
109 // using std::reference_constructs_from_temporary;
110 // using std::reference_converts_from_temporary;
112 // [meta.unary.prop.query], type property queries
113 using std::alignment_of;
117 // [meta.rel], type relations
118 using std::is_base_of;
119 #if _LIBCPP_STD_VER >= 26 && __has_builtin(__builtin_is_virtual_base_of)
120 using std::is_virtual_base_of;
122 using std::is_convertible;
123 // using std::is_layout_compatible;
124 using std::is_nothrow_convertible;
125 // using std::is_pointer_interconvertible_base_of;
128 using std::is_invocable;
129 using std::is_invocable_r;
131 using std::is_nothrow_invocable;
132 using std::is_nothrow_invocable_r;
134 // [meta.trans.cv], const-volatile modifications
135 using std::add_const;
137 using std::add_volatile;
138 using std::remove_const;
139 using std::remove_cv;
140 using std::remove_volatile;
142 using std::add_const_t;
144 using std::add_volatile_t;
145 using std::remove_const_t;
146 using std::remove_cv_t;
147 using std::remove_volatile_t;
149 // [meta.trans.ref], reference modifications
150 using std::add_lvalue_reference;
151 using std::add_rvalue_reference;
152 using std::remove_reference;
154 using std::add_lvalue_reference_t;
155 using std::add_rvalue_reference_t;
156 using std::remove_reference_t;
158 // [meta.trans.sign], sign modifications
159 using std::make_signed;
160 using std::make_unsigned;
162 using std::make_signed_t;
163 using std::make_unsigned_t;
165 // [meta.trans.arr], array modifications
166 using std::remove_all_extents;
167 using std::remove_extent;
169 using std::remove_all_extents_t;
170 using std::remove_extent_t;
172 // [meta.trans.ptr], pointer modifications
173 using std::add_pointer;
174 using std::remove_pointer;
176 using std::add_pointer_t;
177 using std::remove_pointer_t;
179 // [meta.trans.other], other transformations
180 using std::basic_common_reference;
181 using std::common_reference;
182 using std::common_type;
183 using std::conditional;
185 using std::enable_if;
186 using std::invoke_result;
187 using std::remove_cvref;
188 using std::type_identity;
189 using std::underlying_type;
190 using std::unwrap_ref_decay;
191 using std::unwrap_reference;
193 using std::common_reference_t;
194 using std::common_type_t;
195 using std::conditional_t;
197 using std::enable_if_t;
198 using std::invoke_result_t;
199 using std::remove_cvref_t;
200 using std::type_identity_t;
201 using std::underlying_type_t;
202 using std::unwrap_ref_decay_t;
203 using std::unwrap_reference_t;
206 // [meta.logical], logical operator traits
207 using std::conjunction;
208 using std::disjunction;
211 // [meta.unary.cat], primary type categories
212 using std::is_array_v;
213 using std::is_class_v;
214 using std::is_enum_v;
215 using std::is_floating_point_v;
216 using std::is_function_v;
217 using std::is_integral_v;
218 using std::is_lvalue_reference_v;
219 using std::is_member_function_pointer_v;
220 using std::is_member_object_pointer_v;
221 using std::is_null_pointer_v;
222 using std::is_pointer_v;
223 using std::is_rvalue_reference_v;
224 using std::is_union_v;
225 using std::is_void_v;
227 // [meta.unary.comp], composite type categories
228 using std::is_arithmetic_v;
229 using std::is_compound_v;
230 using std::is_fundamental_v;
231 using std::is_member_pointer_v;
232 using std::is_object_v;
233 using std::is_reference_v;
234 using std::is_scalar_v;
236 // [meta.unary.prop], type properties
237 using std::has_unique_object_representations_v;
238 using std::has_virtual_destructor_v;
239 using std::is_abstract_v;
240 using std::is_aggregate_v;
241 using std::is_assignable_v;
242 using std::is_bounded_array_v;
243 using std::is_const_v;
244 using std::is_constructible_v;
245 using std::is_copy_assignable_v;
246 using std::is_copy_constructible_v;
247 using std::is_default_constructible_v;
248 using std::is_destructible_v;
249 using std::is_empty_v;
250 using std::is_final_v;
251 #if _LIBCPP_STD_VER >= 23 && __has_builtin(__builtin_is_implicit_lifetime)
252 using std::is_implicit_lifetime_v;
254 using std::is_move_assignable_v;
255 using std::is_move_constructible_v;
256 using std::is_nothrow_assignable_v;
257 using std::is_nothrow_constructible_v;
258 using std::is_nothrow_copy_assignable_v;
259 using std::is_nothrow_copy_constructible_v;
260 using std::is_nothrow_default_constructible_v;
261 using std::is_nothrow_destructible_v;
262 using std::is_nothrow_move_assignable_v;
263 using std::is_nothrow_move_constructible_v;
264 using std::is_nothrow_swappable_v;
265 using std::is_nothrow_swappable_with_v;
266 using std::is_polymorphic_v;
267 #if _LIBCPP_STD_VER >= 23
268 using std::is_scoped_enum_v;
270 using std::is_signed_v;
271 using std::is_standard_layout_v;
272 using std::is_swappable_v;
273 using std::is_swappable_with_v;
274 using std::is_trivial_v;
275 using std::is_trivially_assignable_v;
276 using std::is_trivially_constructible_v;
277 using std::is_trivially_copy_assignable_v;
278 using std::is_trivially_copy_constructible_v;
279 using std::is_trivially_copyable_v;
280 using std::is_trivially_default_constructible_v;
281 using std::is_trivially_destructible_v;
282 using std::is_trivially_move_assignable_v;
283 using std::is_trivially_move_constructible_v;
284 using std::is_unbounded_array_v;
285 using std::is_unsigned_v;
286 using std::is_volatile_v;
287 // using std::reference_constructs_from_temporary_v;
288 // using std::reference_converts_from_temporary_v;
290 // [meta.unary.prop.query], type property queries
291 using std::alignment_of_v;
295 // [meta.rel], type relations
296 using std::is_base_of_v;
297 #if _LIBCPP_STD_VER >= 26 && __has_builtin(__builtin_is_virtual_base_of)
298 using std::is_virtual_base_of_v;
300 using std::is_convertible_v;
301 using std::is_invocable_r_v;
302 using std::is_invocable_v;
303 // using std::is_layout_compatible_v;
304 using std::is_nothrow_convertible_v;
305 using std::is_nothrow_invocable_r_v;
306 using std::is_nothrow_invocable_v;
307 // using std::is_pointer_interconvertible_base_of_v;
308 using std::is_same_v;
310 // [meta.logical], logical operator traits
311 using std::conjunction_v;
312 using std::disjunction_v;
313 using std::negation_v;
315 // [meta.member], member relationships
316 // using std::is_corresponding_member;
317 // using std::is_pointer_interconvertible_with_class;
319 // [meta.const.eval], constant evaluation context
320 using std::is_constant_evaluated;
323 using std::aligned_storage;
324 using std::aligned_storage_t;
325 using std::aligned_union;
326 using std::aligned_union_t;