------- Comment #5 from jason at gcc dot gnu dot org 2009-11-04 22:34 -------
14.7.1 [temp.local]
Like normal (non-template) classes, class templates have an injected-class-name
(Clause 9). The injected-class-name can be used with or without a
template-argument-list. When it is used without a template-argument-list, it is
equivalent to the injected-class-name followed by the template-parameters of
the class template enclosed in <>. When it is used with a
template-argument-list, it refers to the specified class template
specialization, which could be the current specialization or another
specialization.
So within foo::bar<int>, the name "bar" refers to foo::bar, and G++ is correct.
--
jason at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8858