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