This should compile, it does with 3.3.2 but not with 3.4.0 and 4.0.0
template<class T1,int N1>
class Class
{
public:
    template <class T2,int N2> void function( const Class<T2,N2>& );
};

template<>
template<class T2,int N2>
void Class<int,1>::function( const Class<T2,N2>& param ) 
{
    param;// line 12
}

int main()
{
    Class<int,1> instance;
    Class<char,2> param;
    instance.function( param );
}


This is a regression from the begining of this year:
: Search converges between 2004-03-01-trunk (#446) and 2004-04-01-trunk (#447).
: Search converges between 2004-03-15-3.4 (#3) and 2004-04-01-3.4 (#4).

-- 
           Summary: [3.4/4.0 Regression] specialization of template class
                    with inner template members and paramater
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org


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

Reply via email to