xref: /minix3/external/bsd/llvm/dist/clang/test/CXX/class/p6-0x.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
2*f4a2713aSLionel Sambuc // expected-no-diagnostics
3*f4a2713aSLionel Sambuc 
4*f4a2713aSLionel Sambuc class Trivial { int n; void f(); };
5*f4a2713aSLionel Sambuc class NonTrivial1 { NonTrivial1(const NonTrivial1 &); };
6*f4a2713aSLionel Sambuc class NonTrivial2 { NonTrivial2(NonTrivial2 &&); };
7*f4a2713aSLionel Sambuc class NonTrivial3 { NonTrivial3 operator=(const NonTrivial3 &); };
8*f4a2713aSLionel Sambuc class NonTrivial4 { NonTrivial4 operator=(NonTrivial4 &&); };
9*f4a2713aSLionel Sambuc class NonTrivial5 { ~NonTrivial5(); };
10*f4a2713aSLionel Sambuc 
11*f4a2713aSLionel Sambuc static_assert(__is_trivial(Trivial), "Trivial is not trivial");
12*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial1), "NonTrivial1 is trivial");
13*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial2), "NonTrivial2 is trivial");
14*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial3), "NonTrivial3 is trivial");
15*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial4), "NonTrivial4 is trivial");
16*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial5), "NonTrivial5 is trivial");
17*f4a2713aSLionel Sambuc 
18*f4a2713aSLionel Sambuc struct Trivial2 {
19*f4a2713aSLionel Sambuc   Trivial2() = default;
20*f4a2713aSLionel Sambuc   Trivial2(const Trivial2 &) = default;
21*f4a2713aSLionel Sambuc   Trivial2(Trivial2 &&) = default;
22*f4a2713aSLionel Sambuc   Trivial2 &operator=(const Trivial2 &) = default;
23*f4a2713aSLionel Sambuc   Trivial2 &operator=(Trivial2 &&) = default;
24*f4a2713aSLionel Sambuc   ~Trivial2() = default;
25*f4a2713aSLionel Sambuc };
26*f4a2713aSLionel Sambuc 
27*f4a2713aSLionel Sambuc class NonTrivial6 { ~NonTrivial6(); };
28*f4a2713aSLionel Sambuc 
29*f4a2713aSLionel Sambuc NonTrivial6::~NonTrivial6() = default;
30*f4a2713aSLionel Sambuc 
31*f4a2713aSLionel Sambuc static_assert(!__is_trivial(NonTrivial6), "NonTrivial6 is trivial");
32