[Bug c++/15271] New: use of nested template classes generates internal error

albert at rad dot upenn dot edu gcc-bugzilla@gcc.gnu.org
Mon May 3 20:41:00 GMT 2004


Configuration:
Configured with: /ipl/srcs/gnu/gcc-3.3.1/configure
--prefix=/ipl/inst01/gnu/gcc-3.3.1 --with-gnu-ld
--with-ld=/ipl/inst01/gnu/binutils-2.14/bin/ld --with-gnu-as
--with-as=/ipl/inst01/gnu/binutils-2.14/bin/as
Thread model: posix
gcc version 3.3.1

Compilation of the below code with:
 g++ -c bug bug.cc
generates the following error message:
bug.cc: In function `BGvec_base<Dimension, coeff_t> operator*(k_t, const 
   BGvec_base<Dimension, coeff_t>&) [with k_t = double, int Dimension = 2, 
   coeff_t = double]':
bug.cc:31:   instantiated from here
bug.cc:25: internal compiler error: in tsubst, at cp/pt.c:6739
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Thank you.  As always, you have my deep appreciation.

template<int Dimension, typename coeff_t=double>
class BGvec_base{
        public:
        //default constructor, default copy constructor, default assignment
        double& operator[](int i){ return v[i]; }
        const double& operator[](int i) const { return v[i]; }

        template<typename k_t>
        class Ktimes : public BGvec_base{
                public:
                Ktimes( k_t k, const BGvec_base& A ){
                        for(int i=0; i<Dimension; ++i) v[i] = k*A[i];
                }
        };


        protected:
        coeff_t v[Dimension];
};

template<typename k_t, int Dimension, typename coeff_t>
BGvec_base<Dimension, coeff_t> operator*
                        ( k_t k, const BGvec_base<Dimension,coeff_t>& A)
{
        return BGvec_base<Dimension,coeff_t>::Ktimes<k_t> (k,A);
}

int main(int argc, char *argv[])
{
        BGvec_base<2> A; A[0] = 5.0; A[1] = 7.0;
        BGvec_base<2> B = 2.0*A;
}

-- 
           Summary: use of nested template classes generates internal error
           Product: gcc
           Version: 3.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: albert at rad dot upenn dot edu
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: sparc-sun-solaris2.8
  GCC host triplet: sparc-sun-solaris2.8
GCC target triplet: sparc-sun-solaris2.8


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



More information about the Gcc-bugs mailing list