xref: /aosp_15_r20/external/clang/test/PCH/cxx-traits.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Test this without pch.
2*67e74705SXin Li // RUN: %clang_cc1 -fms-extensions -include %S/cxx-traits.h -std=c++11 -fsyntax-only -verify %s
3*67e74705SXin Li 
4*67e74705SXin Li // RUN: %clang_cc1 -fms-extensions -x c++-header -std=c++11 -emit-pch -o %t %S/cxx-traits.h
5*67e74705SXin Li // RUN: %clang_cc1 -fms-extensions -std=c++11 -include-pch %t -DPCH -fsyntax-only -verify %s
6*67e74705SXin Li 
7*67e74705SXin Li #ifdef PCH
8*67e74705SXin Li // expected-no-diagnostics
9*67e74705SXin Li #endif
10*67e74705SXin Li 
11*67e74705SXin Li bool _Is_pod_comparator = n::__is_pod<int>::__value;
12*67e74705SXin Li bool _Is_empty_check = n::__is_empty<int>::__value;
13*67e74705SXin Li 
14*67e74705SXin Li bool default_construct_int = n::is_trivially_constructible<int>::value;
15*67e74705SXin Li bool copy_construct_int = n::is_trivially_constructible<int, const int&>::value;
16*67e74705SXin Li 
17*67e74705SXin Li // The built-ins should still work too:
18*67e74705SXin Li bool _is_abstract_result = __is_abstract(int);
19*67e74705SXin Li bool _is_arithmetic_result = __is_arithmetic(int);
20*67e74705SXin Li bool _is_array_result = __is_array(int);
21*67e74705SXin Li bool _is_assignable_result = __is_assignable(int, int);
22*67e74705SXin Li bool _is_base_of_result = __is_base_of(int, int);
23*67e74705SXin Li bool _is_class_result = __is_class(int);
24*67e74705SXin Li bool _is_complete_type_result = __is_complete_type(int);
25*67e74705SXin Li bool _is_compound_result = __is_compound(int);
26*67e74705SXin Li bool _is_const_result = __is_const(int);
27*67e74705SXin Li bool _is_constructible_result = __is_constructible(int);
28*67e74705SXin Li bool _is_convertible_result = __is_convertible(int, int);
29*67e74705SXin Li bool _is_convertible_to_result = __is_convertible_to(int, int);
30*67e74705SXin Li bool _is_destructible_result = __is_destructible(int);
31*67e74705SXin Li bool _is_empty_result = __is_empty(int);
32*67e74705SXin Li bool _is_enum_result = __is_enum(int);
33*67e74705SXin Li bool _is_floating_point_result = __is_floating_point(int);
34*67e74705SXin Li bool _is_final_result = __is_final(int);
35*67e74705SXin Li bool _is_function_result = __is_function(int);
36*67e74705SXin Li bool _is_fundamental_result = __is_fundamental(int);
37*67e74705SXin Li bool _is_integral_result = __is_integral(int);
38*67e74705SXin Li bool _is_interface_class_result = __is_interface_class(int);
39*67e74705SXin Li bool _is_literal_result = __is_literal(int);
40*67e74705SXin Li bool _is_lvalue_expr_result = __is_lvalue_expr(0);
41*67e74705SXin Li bool _is_lvalue_reference_result = __is_lvalue_reference(int);
42*67e74705SXin Li bool _is_member_function_pointer_result = __is_member_function_pointer(int);
43*67e74705SXin Li bool _is_member_object_pointer_result = __is_member_object_pointer(int);
44*67e74705SXin Li bool _is_member_pointer_result = __is_member_pointer(int);
45*67e74705SXin Li bool _is_nothrow_assignable_result = __is_nothrow_assignable(int, int);
46*67e74705SXin Li bool _is_nothrow_constructible_result = __is_nothrow_constructible(int);
47*67e74705SXin Li bool _is_nothrow_destructible_result = __is_nothrow_destructible(int);
48*67e74705SXin Li bool _is_object_result = __is_object(int);
49*67e74705SXin Li bool _is_pod_result = __is_pod(int);
50*67e74705SXin Li bool _is_pointer_result = __is_pointer(int);
51*67e74705SXin Li bool _is_polymorphic_result = __is_polymorphic(int);
52*67e74705SXin Li bool _is_reference_result = __is_reference(int);
53*67e74705SXin Li bool _is_rvalue_expr_result = __is_rvalue_expr(0);
54*67e74705SXin Li bool _is_rvalue_reference_result = __is_rvalue_reference(int);
55*67e74705SXin Li bool _is_same_result = __is_same(int, int);
56*67e74705SXin Li bool _is_scalar_result = __is_scalar(int);
57*67e74705SXin Li bool _is_sealed_result = __is_sealed(int);
58*67e74705SXin Li bool _is_signed_result = __is_signed(int);
59*67e74705SXin Li bool _is_standard_layout_result = __is_standard_layout(int);
60*67e74705SXin Li bool _is_trivial_result = __is_trivial(int);
61*67e74705SXin Li bool _is_trivially_assignable_result = __is_trivially_assignable(int, int);
62*67e74705SXin Li bool _is_trivially_constructible_result = __is_trivially_constructible(int);
63*67e74705SXin Li bool _is_trivially_copyable_result = __is_trivially_copyable(int);
64*67e74705SXin Li bool _is_union_result = __is_union(int);
65*67e74705SXin Li bool _is_unsigned_result = __is_unsigned(int);
66*67e74705SXin Li bool _is_void_result = __is_void(int);
67*67e74705SXin Li bool _is_volatile_result = __is_volatile(int);
68