------- Additional Comments From pinskia at gcc dot gnu dot org 2005-03-03
23:25 -------
Hmm, this is the reduced testcase (but I don't know if this is invalid as
Comeau also rejects it but I think
it is valid):
template<typename> int nick(int e);
template<int> struct operation{int nick;};
template<int s>
bool alphaMnemonic(const operation<s>& o1, const operation<s>& o2)
{
return o1.nick < o2.nick;
}
If nick was not a template or not declated we accept it, if alphaMnemonic is
not a template we accept it.
I think we have a name lookup problem really. if we want o1.nick as a template
we need the template
keyword. This is not a regression if this is valid code, I really think it is.
ICC 8.0 accepts it.
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |pinskia at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Keywords| |rejects-valid
Known to fail| |3.3.3 3.4.0 4.0.0 2.95.3
| |3.2.3
Last reconfirmed|0000-00-00 00:00:00 |2005-03-03 23:25:22
date| |
Summary|lost parser |parser thinks something is a
| |start of a template-id when
| |it is just less than
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20308