1 // PR c++/29043
2 // { dg-do compile }
3 
4 struct S // { dg-message "implicitly deleted" "" { target c++11 } }
5 	 // { dg-error "uninitialized" "" { target c++11 } .-1 }
6 {
7   int const i; // { dg-message "should be initialized" }
8 };
9 
10 class C
11 {
12 public:
C()13   C() {} // { dg-error "uninitialized const member|deleted" }
14   S s;
15 };
16 
17 struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
18 	  // { dg-error "uninitialized" "" { target c++11 } .-1 }
19 {
20   int& ref;   // { dg-message "should be initialized" }
21 };
22 
23 class C2
24 {
25 public:
C2()26   C2() {} // { dg-error "uninitialized reference member|deleted" }
27   S2 s;
28 };
29 
30 class C3
31 {
C3()32   C3() { }
33   struct s {
34     const int i;
35   };
36 };
37 
38 struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
39 	  // { dg-error "uninitialized" "" { target c++11 } .-1 }
40 {
41   int const i; // { dg-message "should be initialized" }
42 };
43 
44 struct C4
45 {
C4C446   C4() {} // { dg-error "uninitialized const member|deleted" }
47   S4 s4[ 1 ];
48 };
49 
50 struct C5
51 {
C5C552   C5() {} // { dg-error "uninitialized" }
53   int const iit[ 1 ];
54 };
55 
56