c++/9464: [3.4 regression] ICE on missing typename
bangerth@dealii.org
bangerth@dealii.org
Mon Jan 27 22:00:00 GMT 2003
Old Synopsis: ICE on missing typename
New Synopsis: [3.4 regression] ICE on missing typename
State-Changed-From-To: open->analyzed
State-Changed-By: bangerth
State-Changed-When: Mon Jan 27 22:00:59 2003
State-Changed-Why:
Confirmed. Fallout from the implicit typename deprecation.
Here's a similar snippet, which I think is even legal since
we don't instantiate for a particular value of T (well, legal except for the missing typename, of course):
-----------------------------------
template<typename T, typename A> struct X {
typedef typename A::template foo<T>::type type;
};
template<typename T, typename = int> struct Y {
typedef double type;
typename X<T,T>::type t;
};
template<class T>
struct Z {
typedef Y<T>::type type;
};
-------------------------
g/a> /home/bangerth/bin/gcc-3.4-pre/bin/c++ -c x.ii
x.ii: In instantiation of `Y<T, int>':
x.ii:12: instantiated from here
x.ii:7: error: `Y<T, <anonymous template type parameter> >::t' has incomplete
type
x.ii:7: internal compiler error: in cxx_incomplete_type_diagnostic, at
cp/typeck2.c:278
Please submit a full bug report,
with preprocessed source if appropriate.
Since an ICE is worse than an error message, I rate this
as a regression. It gave warnings about the implicit
typename stuff with 3.3 and 3.2.2, and worked with 2.95
W.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9464
More information about the Gcc-prs
mailing list