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.