1 // PR c++/58664
2 // { dg-do compile { target c++11 } }
3 
4 struct F;          // { dg-message "forward declaration" }
5 
6 union U            // { dg-message "not complete" }
7 {
8   U u[1] = { 0 };  // { dg-error "incomplete type" }
9 };
10 
11 template<typename T>
12 union UT           // { dg-message "not complete" }
13 {
14   UT u[1] = { 0 }; // { dg-error "incomplete type" }
15 };
16 
17 template union UT<int>;
18 
19 union UF
20 {
21   F u[1] = { 0 };  // { dg-error "incomplete type" }
22 };
23 
24 template<typename T>
25 union UFT
26 {
27   F u[1] = { 0 };  // { dg-error "incomplete type" }
28 };
29 
30 template union UFT<int>;
31 
32 struct S           // { dg-message "not complete" }
33 {
34   S s[1] = { 0 };  // { dg-error "incomplete type" }
35 };
36 
37 template<typename T>
38 struct ST          // { dg-message "not complete" }
39 {
40   ST s[1] = { 0 }; // { dg-error "incomplete type" }
41 };
42 
43 template class ST<int>;
44 
45 struct SF
46 {
47   F s[1] = { 0 };  // { dg-error "incomplete type" }
48 };
49 
50 template<typename T>
51 struct SFT
52 {
53   F s[1] = { 0 };  // { dg-error "incomplete type" }
54 };
55 
56 template class SFT<int>;
57