https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107022
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- For the example in comment 0 the default-initializer for things_{} is the problem, removing the {} allows it to compile. For the example in Bug 107340 the problem is the default-initializer x = 0 in the nested class, removing that allows it to compile. The nested class is complete at the closing } but its complete class contexts are not complete until the enclosing class is complete. default-initializers and nested classes do not work well.