The code in question:
==== begin ====
struct C
{
template <typename T> void f() {}
};
template <typename T> void ff()
{
C c;
c.f();
}
==== end ====
g++ 3.3 (version 3.3.5, Debian 1:3.3.5-2) cannot compile the above code. With
command line "g++-3.3 -c -o a.o a.cc", it displays the following error messages:
a.cc: In function `void ff()':
a.cc:9: error: parse error before `>' token
The above code compiles fine in g++ 3.4 (version 3.4.2, Debian 3.4.2-3).
What interesting is if the member function and the free function above have same
name, g++ 3.3 compiles the code without problem. And the code generated seems to
be fine.
--
Summary: error in parsing function template
Product: gcc
Version: 3.3.5
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: zhaojiangbin at yahoo dot com
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18497