c++/9460: parse error on template member function
Wolfgang Bangerth
bangerth@ticam.utexas.edu
Tue Jan 28 21:16:00 GMT 2003
The following reply was made to PR c++/9460; it has been noted by GNATS.
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: Oliver Schoenborn <oliver.schoenborn@utoronto.ca>
Cc: gcc-gnats@gcc.gnu.org, <farfetchd@libero.it>
Subject: Re: c++/9460: parse error on template member function
Date: Tue, 28 Jan 2003 15:14:57 -0600 (CST)
On Tue, 28 Jan 2003, Oliver Schoenborn wrote:
> OK for the section, BUT there is still a bug, just not the right category
> (like another developer said): when the member function name is changed from
> test2 to test, the parse error disappears a few lines above disappears. This
> has to be re-opened and re-categorized.
No, Giovanni is wrong: both examples he shows are perfectly legal: in the
first one, Foo::F1 is called as can easily be seen in the assembler
output. The fact the Bar::F1 exists has no influence whatsoever.
In the second, the same obviously holds.
In both cases, you don't need the "template" keyword for disambiguation,
since neither the expression before the "." is template dependent (it is
just an object of non-templated type "Foo"), nor the one after the dot,
which _is_ templates by the template type is known at the time of parsing,
being a constant "int". It would be different if you would call
Foo().F1<A> ();
in which case you would have to use
Foo().template F1<A> ();
Unfortunately, this ICEs with the present mainline compile (I just filed a
report for this).
W.
-------------------------------------------------------------------------
Wolfgang Bangerth email: bangerth@ticam.utexas.edu
www: http://www.ticam.utexas.edu/~bangerth/
More information about the Gcc-prs
mailing list