------- 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