This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/7939: [3.3/3.4 regression] [2003-05-03] ICE on function template specialization
- From: "Giovanni Bajo" <giovannibajo at libero dot it>
- To: <gcc-gnats at gcc dot gnu dot org>,<kparz at iastate dot edu>,<gcc-bugs at gcc dot gnu dot org>,<nobody at gcc dot gnu dot org>,<gcc-prs at gcc dot gnu dot org>
- Date: Mon, 5 May 2003 02:46:22 +0200
- Subject: Re: c++/7939: [3.3/3.4 regression] [2003-05-03] ICE on function template specialization
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7939
This is a regression from 2.95. Currently, we get the following on mainline
and 3.3:
pr7939.cpp:2: error: `<anonymous>' has incomplete type
pr7939.cpp:2: error: invalid use of `void'
pr7939.cpp:2: error: partial specialization `foo<T, void>' of function
template
pr7939.cpp:2: internal compiler error: in comptypes, at cp/typeck.c:913
Please submit a full bug report,
while we used to get this on 2.95:
pr7939.cpp:2: template-id `foo<T, void>' in declaration of primary template
So, there is actually an improvement on the error message (the parser is
able to understand that the code is trying to define a partial
specialization of a function template, which is indeed a great diagnostic),
but then it ICEs during error recovery. I think the error message could also
be a little epurated (removing those other lines if possible, especially the
one with <anonymous> which is really cryptic), and maybe specifying
explicitally that "partial specialization of function template is not
allowed by ISO C++".
Giovanni Bajo