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