https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63268
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to David Kastrup from comment #2) > class Deriv is not a class template. I didn't say it is. > Deriv is an ordinary class with one > base class being the specialized Bass<int>. And Bass is a class template. In the scope of Bass the name "Bass" refers to the current specialization. See 14.6.1 [temp.local]. > I see no reason why in a non-template class definition the unspecialized > template name of a specialized base class should have any special state. Because names from base classes are visible in derived classes. The injected-class-name (see 9 [class] p2) in Bass is visible in derived classes, like any other name declared in Bass. > Assuming that you get further in the standard before headaches set in than I > do, could you cite the section that you derive your opinion from? I already did, via the linked DRs in the stackoverflow answer, but have repeated them again above. I also double-checked with Clang and EDG, which agree with GCC.