// PR c++/58664 // { dg-do compile { target c++11 } } struct F; // { dg-message "forward declaration" } union U // { dg-message "not complete" } { U u[1] = { 0 }; // { dg-error "5:field .u. has incomplete type" } }; template union UT // { dg-message "not complete" } { UT u[1] = { 0 }; // { dg-error "incomplete type" } }; template union UT; union UF { F u[1] = { 0 }; // { dg-error "5:field .u. has incomplete type" } }; template union UFT { F u[1] = { 0 }; // { dg-error "5:field .u. has incomplete type" } }; template union UFT; struct S // { dg-message "not complete" } { S s[1] = { 0 }; // { dg-error "5:field .s. has incomplete type" } }; template struct ST // { dg-message "not complete" } { ST s[1] = { 0 }; // { dg-error "incomplete type" } }; template class ST; struct SF { F s[1] = { 0 }; // { dg-error "5:field .s. has incomplete type" } }; template struct SFT { F s[1] = { 0 }; // { dg-error "5:field .s. has incomplete type" } }; template class SFT;