c++/6255: ICE with templatess
reichelt@igpm.rwth-aachen.de
reichelt@igpm.rwth-aachen.de
Thu Apr 11 06:10:00 GMT 2002
>Number: 6255
>Category: c++
>Synopsis: ICE with templatess
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Apr 11 06:06:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Volker Reichelt
>Release: gcc 3.0.x, gcc 3.1 20020408 (prerelease)
>Organization:
>Environment:
i686-pc-linux-gnu
>Description:
When compiling the following code I get an ICE:
----------------------------snip here-------------------
template <class T> struct A { typedef int X; };
template <class T> struct B { typedef A<T> Y; void f (Y::X); };
template <class T, class T1, class T2, class T3> struct C : public B<T> { void g (Y::X); };
template class B<int>;
----------------------------snip here-------------------
bug.cpp:2: warning: `typename A<T>::X' is implicitly a typename
bug.cpp:2: warning: implicit typename is deprecated, please see the
documentation for details
bug.cpp:3: warning: `typename C<T, T1, T2, T3>::Y::X' is implicitly a typename
bug.cpp:3: warning: implicit typename is deprecated, please see the
documentation for details
bug.cpp: In instantiation of `B<int>':
bug.cpp:4: instantiated from here
bug.cpp:2: internal error: Segmentation fault
Please submit a full bug report, [etc.]
It's a regression from 2.95.2 where the code compiled
without error. With 3.0.x the warnings disappear.
The ICE vanishes if I replace "Y::X" by "typename Y::X".
So it's actually an ice-on-deprecated-code.
The problem is the same as the reduced testcase in PR 3649.
The original testcase compiles fine now, so that PR 3649
was closed.
>How-To-Repeat:
g++ -c bug.cpp
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list