1afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// RUN: %clang_cc1 -E %s -o - | FileCheck %s
2afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
3afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_nothrow_assign)
4afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_nothrow_assign();
5afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
6afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_nothrow_assign();
7afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
8afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_nothrow_copy)
9afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_nothrow_copy();
10afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
11afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_nothrow_copy();
12afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
13afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_nothrow_constructor)
14afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_nothrow_constructor();
15afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
16afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_nothrow_constructor();
17afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
18afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_trivial_assign)
19afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_trivial_assign();
20afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
21afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_trivial_assign();
22afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
23afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_trivial_copy)
24afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_trivial_copy();
25afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
26afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_trivial_copy();
27afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
28afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_trivial_constructor)
29afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_trivial_constructor();
30afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
31afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_trivial_constructor();
32afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
33afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_trivial_destructor)
34afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_trivial_destructor();
35afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
36afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_trivial_destructor();
37afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
38afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(has_virtual_destructor)
39afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint has_virtual_destructor();
40afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
41afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int has_virtual_destructor();
42afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
43afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_abstract)
44afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_abstract();
45afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
46afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_abstract();
47afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
48afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_base_of)
49afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_base_of();
50afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
51afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_base_of();
52afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
53afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_class)
54afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_class();
55afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
56afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_class();
57afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#if __has_feature(is_constructible)
59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint is_constructible();
60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif
61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: int is_constructible();
62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
63afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_convertible_to)
64afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_convertible_to();
65afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
66afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_convertible_to();
67afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
68afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_empty)
69afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_empty();
70afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
71afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_empty();
72afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
73afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_enum)
74afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_enum();
75afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
76afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_enum();
77afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
785e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregor#if __has_feature(is_final)
795e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregorint is_final();
805e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregor#endif
815e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregor// CHECK: int is_final();
825e9392ba18f5925e26cc5714d1412eda0d219826Douglas Gregor
83afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_pod)
84afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_pod();
85afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
86afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_pod();
87afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
88afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_polymorphic)
89afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_polymorphic();
90afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
91afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_polymorphic();
92afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
93afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_union)
94afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_union();
95afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
96afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_union();
97afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor
98afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#if __has_feature(is_literal)
99afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregorint is_literal();
100afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor#endif
101afdf137c50f7f96ef865cf007f660dd663a8731fDouglas Gregor// CHECK: int is_literal();
102a55e68b7f961d6ef4551c9be9ac18a1e25c7c927Howard Hinnant
103a55e68b7f961d6ef4551c9be9ac18a1e25c7c927Howard Hinnant#if __has_feature(is_standard_layout)
104a55e68b7f961d6ef4551c9be9ac18a1e25c7c927Howard Hinnantint is_standard_layout();
105a55e68b7f961d6ef4551c9be9ac18a1e25c7c927Howard Hinnant#endif
106a55e68b7f961d6ef4551c9be9ac18a1e25c7c927Howard Hinnant// CHECK: int is_standard_layout();
107feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Hunt
108feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Hunt#if __has_feature(is_trivially_copyable)
109feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Huntint is_trivially_copyable();
110feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Hunt#endif
111feb375d31b7e9108b04a9f55b721d5e0c793a558Sean Hunt// CHECK: int is_trivially_copyable();
112858a325e5f250c83409137c5609b162983ea6d1eSean Hunt
113858a325e5f250c83409137c5609b162983ea6d1eSean Hunt#if __has_feature(underlying_type)
114858a325e5f250c83409137c5609b162983ea6d1eSean Huntint underlying_type();
115858a325e5f250c83409137c5609b162983ea6d1eSean Hunt#endif
116858a325e5f250c83409137c5609b162983ea6d1eSean Hunt// CHECK: int underlying_type();
117