https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102199
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is because the following is still valid C++11: struct outer { struct inner { // inner() { } unsigned int x = y; }; static constexpr int y =10; }; That is inner is not completed until outer is completed.