[Bug c++/53492] [4.7/4.8/4.9 Regression] ICE in retrieve_specialization, at cp/pt.c:985
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Mar 1 22:50:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53492
Volker Reichelt <reichelt at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |accepts-invalid
Last reconfirmed|2012-05-26 00:00:00 |2014-03-01
CC| |reichelt at gcc dot gnu.org
Target Milestone|--- |4.7.4
Summary|internal compiler error: in |[4.7/4.8/4.9 Regression]
|retrieve_specialization, at |ICE in
|cp/pt.c:985 |retrieve_specialization, at
| |cp/pt.c:985
--- Comment #4 from Volker Reichelt <reichelt at gcc dot gnu.org> ---
Here's an even simpler testcase:
=====================================================
template<typename> struct A
{
template<typename> struct B;
};
template<> template<typename T> struct A<T>::B
{
B(int) {}
};
A<int>::B<int> b;
=====================================================
It crashes since GCC 4.0.0, but was correctly rejected before.
So this qualifies as a regression.
A slightly modified and still invalid testcase also crashes since GCC 4.0.0
but was wrongly accepted before:
=====================================================
template<typename> struct A
{
template<typename> struct B;
};
template<> template<typename T> struct A<T>::B
{
B() {}
};
A<int>::B<int> b;
=====================================================
Another variation is wrongly accepted since at least GCC 3.2:
=====================================================
template<typename> struct A
{
template<typename> struct B;
};
template<> template<typename T> struct A<T>::B {};
A<int>::B<int> b;
=====================================================
More information about the Gcc-bugs
mailing list