The following IMHO valid testcase is rejected on mainline and the 4.1
branch since a couple of days:

============================================================
template<typename> struct A;

template<typename T, int N> struct A<T[N]> {};

template<typename T, int N> struct A<const T[N]> {};

A<const int[1]> a;
============================================================

bug.cc:7: error: ambiguous class template instantiation for 'struct A<const int
[1]>'
bug.cc:3: error: candidates are: struct A<T [N]>
bug.cc:5: error:                 struct A<const T [N]>
bug.cc:7: error: aggregate 'A<const int [1]> a' has incomplete type and cannot
be defined

The testcase is similar to the testcase g++.dg/template/partial3.C
which still passes. The major difference is that we have a "int N"
here and an "unsigned N" in the testsuite.

Mark, this is due to your fix for PR 28595
http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00991.html
Would you mind having a look?


-- 
           Summary: [4.1/4.2 regression] Template specialization with array
                    rejected
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: rejects-valid, monitored
          Severity: major
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: reichelt at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28886

Reply via email to