Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
// { dg-do compile { target c++11 } } struct A { }; struct B { B(); operator int(); }; struct C { C() = default; C(const C&); C(C&&) = default; C& operator=(C&&); C& operator= (const C&) = default; }; struct D { ~D() {} }; #define SA(X) static_assert((X),#X) SA(__is_trivially_constructible(A)); SA(__is_trivially_constructible(A,A)); SA(!__is_trivially_constructible(B)); SA(__is_trivially_constructible(B,B)); SA(!__is_trivially_constructible(A,B)); SA(!__is_trivially_constructible(B,A)); SA(__is_trivially_constructible(C)); SA(__is_trivially_constructible(C,C)); SA(!__is_trivially_constructible(C,C&)); SA(__is_trivially_assignable(C,C&)); SA(!__is_trivially_assignable(C,C)); SA(!__is_trivially_assignable(C,C&&)); SA(!__is_trivially_assignable(void,int)); SA(!__is_trivially_assignable(const void,int)); SA(!__is_trivially_assignable(volatile void,int)); SA(!__is_trivially_assignable(const volatile void,int)); SA(__is_trivially_constructible(int,int)); SA(__is_trivially_constructible(int,double)); SA(!__is_trivially_constructible(int,B)); SA(!__is_trivially_constructible(void,int)); SA(!__is_trivially_constructible(const void,int)); SA(!__is_trivially_constructible(volatile void,int)); SA(!__is_trivially_constructible(const volatile void,int)); SA(!__is_trivially_constructible(int, void*)); SA(!__is_trivially_constructible(int, int*)); SA(!__is_trivially_constructible(int, const int*)); SA(!__is_trivially_constructible(int*, void*)); SA(!__is_trivially_constructible(int*, const int*)); SA(!__is_trivially_constructible(D)); SA(__is_trivially_copyable(int)); // Changed in CWG 2094, which made volatile-qualified scalars trivially // copyable. SA(__is_trivially_copyable(volatile int)); struct E1 {const int val;}; SA(__is_trivially_copyable(E1)); struct E2 {int& val;}; SA(__is_trivially_copyable(E2));