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

Reply via email to