[NFC][analyzer][docs] Crosslink MallocChecker's ownership attributes (#121939)
[llvm-project.git] / libcxx / modules / std / type_traits.inc
blobf544f95c7aaaae0d9dbf7b4cc6c5a56de5b28f68
1 // -*- C++ -*-
2 //===----------------------------------------------------------------------===//
3 //
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
7 //
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;
16   using std::true_type;
18   // [meta.unary.cat], primary type categories
19   using std::is_array;
20   using std::is_class;
21   using std::is_enum;
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;
31   using std::is_union;
32   using std::is_void;
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;
39   using std::is_object;
40   using std::is_reference;
41   using std::is_scalar;
43   // [meta.unary.prop], type properties
44   using std::is_abstract;
45   using std::is_aggregate;
46   using std::is_const;
47   using std::is_empty;
48   using std::is_final;
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;
58 #endif
59   using std::is_signed;
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;
103 #endif
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;
114   using std::extent;
115   using std::rank;
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;
121 #endif
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;
126   using std::is_same;
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;
136   using std::add_cv;
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;
143   using std::add_cv_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;
184   using std::decay;
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;
196   using std::decay_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;
204   using std::void_t;
206   // [meta.logical], logical operator traits
207   using std::conjunction;
208   using std::disjunction;
209   using std::negation;
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;
253 #endif
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;
269 #endif
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;
292   using std::extent_v;
293   using std::rank_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;
299 #endif
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;
322   // [depr.meta.types]
323   using std::aligned_storage;
324   using std::aligned_storage_t;
325   using std::aligned_union;
326   using std::aligned_union_t;
327   using std::is_pod;
328   using std::is_pod_v;
329 } // namespace std