// PR c++/29043
// { dg-do compile }

struct S // { dg-message "implicitly deleted" "" { target c++11 } }
	 // { dg-error "uninitialized" "" { target c++11 } 4 }
{
  int const i; // { dg-message "should be initialized" }
};

class C
{
public:
  C() {} // { dg-error "uninitialized const member|deleted" }
  S s;
};

struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
	  // { dg-error "uninitialized" "" { target c++11 } 17 }
{
  int& ref;   // { dg-message "should be initialized" }
};

class C2
{
public:
  C2() {} // { dg-error "uninitialized reference member|deleted" }
  S2 s;
};

class C3
{
  C3() { }
  struct s {
    const int i;
  };
};

struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
	  // { dg-error "uninitialized" "" { target c++11 } 38 }
{
  int const i; // { dg-message "should be initialized" }
};

struct C4
{
  C4() {} // { dg-error "uninitialized const member|deleted" }
  S4 s4[ 1 ];
};

struct C5
{
  C5() {} // { dg-error "uninitialized" }
  int const iit[ 1 ];
};

