The following code --- template <typename _T> struct A { template <int _N, int _M> struct B;
template <int _N> struct B<_N, _T::m> { static void f(); }; }; struct C { static const int m = 4; }; void m() { A<C>::B<1, 4>::f(); } -- causes the following ICE as of 4.2 [g++ 4.4] test.cc: In function âvoid m()â: test.cc:22: internal compiler error: in unify, at cp/pt.c:14081 g++ 4.1 yields this error, instead [g++ 4.1] test.cc: In function âvoid m()â: test.cc:22: error: incomplete type âA<C>::B<1, 4>â used in nested name specifier This code seems fine to me (and so seems to intel, xlc++ and comeau online) so I assume it is some issue in g++. -- Summary: ICE in unifiy.c Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: roger dot ferrer at bsc dot es http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43327