http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54055
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler at | |googlemail dot com --- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-07-20 19:18:03 UTC --- Your example can be reduced to the following model code: template<typename T> struct A { struct B : A { }; }; I can assure you that you cannot rely on that. This example has recently been raised to the committee and it was not 100% clear what the result should be. A new core language issue will be opened for this. The problem is that some arguments were brought pointing to the equivalent example struct A { struct B : A { }; }; being invalid since ages. There is no tendency to make the latter valid, but is has to be clarified what the state of the first (your) example will be.