1 // { dg-do compile { target c++11 } }
4 struct B { B(); operator int(); };
10 C& operator= (const C&) = default;
14 #define SA(X) static_assert((X),#X)
16 SA(__is_trivially_constructible(A));
17 SA(__is_trivially_constructible(A,A));
18 SA(!__is_trivially_constructible(B));
19 SA(__is_trivially_constructible(B,B));
21 SA(!__is_trivially_constructible(A,B));
22 SA(!__is_trivially_constructible(B,A));
24 SA(__is_trivially_constructible(C));
25 SA(__is_trivially_constructible(C,C));
26 SA(!__is_trivially_constructible(C,C&));
27 SA(__is_trivially_assignable(C,C&));
28 SA(!__is_trivially_assignable(C,C));
29 SA(!__is_trivially_assignable(C,C&&));
30 SA(!__is_trivially_assignable(void,int));
31 SA(!__is_trivially_assignable(const void,int));
32 SA(!__is_trivially_assignable(volatile void,int));
33 SA(!__is_trivially_assignable(const volatile void,int));
35 SA(__is_trivially_constructible(int,int));
36 SA(__is_trivially_constructible(int,double));
37 SA(!__is_trivially_constructible(int,B));
38 SA(!__is_trivially_constructible(void,int));
39 SA(!__is_trivially_constructible(const void,int));
40 SA(!__is_trivially_constructible(volatile void,int));
41 SA(!__is_trivially_constructible(const volatile void,int));
43 SA(!__is_trivially_constructible(D));
45 SA(__is_trivially_copyable(int));
46 SA(!__is_trivially_copyable(volatile int));
48 struct E1 {const int val;};
49 SA(__is_trivially_copyable(E1));
50 struct E2 {int& val;};
51 SA(__is_trivially_copyable(E2));