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 // using std::is_implicit_lifetime;
103 using std::has_virtual_destructor;
105 using std::has_unique_object_representations;
107 // using std::reference_constructs_from_temporary;
108 // using std::reference_converts_from_temporary;
110 // [meta.unary.prop.query], type property queries
111 using std::alignment_of;
115 // [meta.rel], type relations
116 using std::is_base_of;
117 using std::is_convertible;
118 // using std::is_layout_compatible;
119 using std::is_nothrow_convertible;
120 // using std::is_pointer_interconvertible_base_of;
123 using std::is_invocable;
124 using std::is_invocable_r;
126 using std::is_nothrow_invocable;
127 using std::is_nothrow_invocable_r;
129 // [meta.trans.cv], const-volatile modifications
130 using std::add_const;
132 using std::add_volatile;
133 using std::remove_const;
134 using std::remove_cv;
135 using std::remove_volatile;
137 using std::add_const_t;
139 using std::add_volatile_t;
140 using std::remove_const_t;
141 using std::remove_cv_t;
142 using std::remove_volatile_t;
144 // [meta.trans.ref], reference modifications
145 using std::add_lvalue_reference;
146 using std::add_rvalue_reference;
147 using std::remove_reference;
149 using std::add_lvalue_reference_t;
150 using std::add_rvalue_reference_t;
151 using std::remove_reference_t;
153 // [meta.trans.sign], sign modifications
154 using std::make_signed;
155 using std::make_unsigned;
157 using std::make_signed_t;
158 using std::make_unsigned_t;
160 // [meta.trans.arr], array modifications
161 using std::remove_all_extents;
162 using std::remove_extent;
164 using std::remove_all_extents_t;
165 using std::remove_extent_t;
167 // [meta.trans.ptr], pointer modifications
168 using std::add_pointer;
169 using std::remove_pointer;
171 using std::add_pointer_t;
172 using std::remove_pointer_t;
174 // [meta.trans.other], other transformations
175 using std::basic_common_reference;
176 using std::common_reference;
177 using std::common_type;
178 using std::conditional;
180 using std::enable_if;
181 using std::invoke_result;
182 using std::remove_cvref;
183 using std::type_identity;
184 using std::underlying_type;
185 using std::unwrap_ref_decay;
186 using std::unwrap_reference;
188 using std::common_reference_t;
189 using std::common_type_t;
190 using std::conditional_t;
192 using std::enable_if_t;
193 using std::invoke_result_t;
194 using std::remove_cvref_t;
195 using std::type_identity_t;
196 using std::underlying_type_t;
197 using std::unwrap_ref_decay_t;
198 using std::unwrap_reference_t;
201 // [meta.logical], logical operator traits
202 using std::conjunction;
203 using std::disjunction;
206 // [meta.unary.cat], primary type categories
207 using std::is_array_v;
208 using std::is_class_v;
209 using std::is_enum_v;
210 using std::is_floating_point_v;
211 using std::is_function_v;
212 using std::is_integral_v;
213 using std::is_lvalue_reference_v;
214 using std::is_member_function_pointer_v;
215 using std::is_member_object_pointer_v;
216 using std::is_null_pointer_v;
217 using std::is_pointer_v;
218 using std::is_rvalue_reference_v;
219 using std::is_union_v;
220 using std::is_void_v;
222 // [meta.unary.comp], composite type categories
223 using std::is_arithmetic_v;
224 using std::is_compound_v;
225 using std::is_fundamental_v;
226 using std::is_member_pointer_v;
227 using std::is_object_v;
228 using std::is_reference_v;
229 using std::is_scalar_v;
231 // [meta.unary.prop], type properties
232 using std::has_unique_object_representations_v;
233 using std::has_virtual_destructor_v;
234 using std::is_abstract_v;
235 using std::is_aggregate_v;
236 using std::is_assignable_v;
237 using std::is_bounded_array_v;
238 using std::is_const_v;
239 using std::is_constructible_v;
240 using std::is_copy_assignable_v;
241 using std::is_copy_constructible_v;
242 using std::is_default_constructible_v;
243 using std::is_destructible_v;
244 using std::is_empty_v;
245 using std::is_final_v;
246 // using std::is_implicit_lifetime_v;
247 using std::is_move_assignable_v;
248 using std::is_move_constructible_v;
249 using std::is_nothrow_assignable_v;
250 using std::is_nothrow_constructible_v;
251 using std::is_nothrow_copy_assignable_v;
252 using std::is_nothrow_copy_constructible_v;
253 using std::is_nothrow_default_constructible_v;
254 using std::is_nothrow_destructible_v;
255 using std::is_nothrow_move_assignable_v;
256 using std::is_nothrow_move_constructible_v;
257 using std::is_nothrow_swappable_v;
258 using std::is_nothrow_swappable_with_v;
259 using std::is_polymorphic_v;
260 #if _LIBCPP_STD_VER >= 23
261 using std::is_scoped_enum_v;
263 using std::is_signed_v;
264 using std::is_standard_layout_v;
265 using std::is_swappable_v;
266 using std::is_swappable_with_v;
267 using std::is_trivial_v;
268 using std::is_trivially_assignable_v;
269 using std::is_trivially_constructible_v;
270 using std::is_trivially_copy_assignable_v;
271 using std::is_trivially_copy_constructible_v;
272 using std::is_trivially_copyable_v;
273 using std::is_trivially_default_constructible_v;
274 using std::is_trivially_destructible_v;
275 using std::is_trivially_move_assignable_v;
276 using std::is_trivially_move_constructible_v;
277 using std::is_unbounded_array_v;
278 using std::is_unsigned_v;
279 using std::is_volatile_v;
280 // using std::reference_constructs_from_temporary_v;
281 // using std::reference_converts_from_temporary_v;
283 // [meta.unary.prop.query], type property queries
284 using std::alignment_of_v;
288 // [meta.rel], type relations
289 using std::is_base_of_v;
290 using std::is_convertible_v;
291 using std::is_invocable_r_v;
292 using std::is_invocable_v;
293 // using std::is_layout_compatible_v;
294 using std::is_nothrow_convertible_v;
295 using std::is_nothrow_invocable_r_v;
296 using std::is_nothrow_invocable_v;
297 // using std::is_pointer_interconvertible_base_of_v;
298 using std::is_same_v;
300 // [meta.logical], logical operator traits
301 using std::conjunction_v;
302 using std::disjunction_v;
303 using std::negation_v;
305 // [meta.member], member relationships
306 // using std::is_corresponding_member;
307 // using std::is_pointer_interconvertible_with_class;
309 // [meta.const.eval], constant evaluation context
310 using std::is_constant_evaluated;
313 using std::aligned_storage;
314 using std::aligned_storage_t;
315 using std::aligned_union;
316 using std::aligned_union_t;