Merge from trunk: 215733-215743
[official-gcc.git] / main / gcc / testsuite / g++.dg / ext / is_trivially_constructible1.C
blobf558538694c69f6980a040683ac163e83549c832
1 // { dg-do compile { target c++11 } }
3 struct A { };
4 struct B { B(); operator int(); };
5 struct C {
6   C() = default;
7   C(const C&);
8   C(C&&) = default;
9   C& operator=(C&&);
10   C& operator= (const C&) = default;
12 struct D { ~D() {} };
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&&));
31 SA(__is_trivially_constructible(int,int));
32 SA(__is_trivially_constructible(int,double));
33 SA(!__is_trivially_constructible(int,B));
35 SA(!__is_trivially_constructible(D));