// RUN: %clang_cc1 -fsyntax-only -verify %s // FIXME: Very incomplete! // If a program calls for the default initialization of an object of a // const-qualified type T, T shall be a class type with a // user-provided default constructor, except if T has no uninitialized fields. struct MakeNonPOD { MakeNonPOD(); }; struct NoUserDefault : public MakeNonPOD { int field; }; struct HasUserDefault { HasUserDefault(); }; void test_const_default_init() { const NoUserDefault x1; // expected-error{{default initialization of an object of const type 'const NoUserDefault' without a user-provided default constructor}} const HasUserDefault x2; const int x3; // expected-error{{default initialization of an object of const type 'const int'}} } // rdar://8501008 struct s0 { int field; }; struct s1 { static const s0 foo; }; const struct s0 s1::foo; // expected-error{{default initialization of an object of const type 'const struct s0' without a user-provided default constructor}} template<typename T> struct s2 { static const s0 foo; }; template<> const struct s0 s2<int>::foo; // okay