// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wno-deprecated-builtins
// expected-no-diagnostics
structT1{};static_assert(__has_trivial_constructor(T1),"T1 has trivial constructor!");structT2{T2();};static_assert(!__has_trivial_constructor(T2),"T2 has a user-declared constructor!");structT3{virtualvoidf();};static_assert(!__has_trivial_constructor(T3),"T3 has a virtual function!");structT4:virtualT3{};static_assert(!__has_trivial_constructor(T4),"T4 has a virtual base class!");structT5:T1{};static_assert(__has_trivial_constructor(T5),"All the direct base classes of T5 have trivial constructors!");structT6{T5 t5;T1 t1[2][2];staticT2 t2;};static_assert(__has_trivial_constructor(T6),"All nonstatic data members of T6 have trivial constructors!");structT7{T4 t4;};static_assert(!__has_trivial_constructor(T7),"t4 does not have a trivial constructor!");structT8:T2{};static_assert(!__has_trivial_constructor(T8),"The base class T2 does not have a trivial constructor!");