Bug report

Pieter van Beek kobasoft@xs4all.nl
Fri Oct 9 15:11:00 GMT 1998


Dear Developers,

egcs told me to send you a bug-report. so here it is!




[kobasoft model3]$ make valvector
g++    -c valvector.C -o valvector.o
In file included from valvector.C:1:
valvector.H:71: Internal compiler error.
valvector.H:71: Please submit a full bug report to
`egcs-bugs@cygnus.com'.
make: *** [valvector.o] Error 1

[kobasoft model3]$ egcs -v 
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.90.27/specs
gcc version egcs-2.90.27 980315 (egcs-1.0.2 release)


This is the header-file (valvector.H):
--------------------------------------


#ifndef VALVECTOR_H
#define VALVECTOR_H

template <class T> class ValVector {
public:
  ValVector ();
  ValVector (int);
  ValVector (int, T);
  ValVector (const ValVector <T> &);
  ~ValVector ();
  ValVector <T>& operator= (const ValVector <T> &);
  T& operator[] (int);
  T& at (int);
  int resize (int); // returns OLD size
  int size ();
  template <class U> ValVector <T>& operator+= <U> (U);
  template <class U> ValVector <T>& operator-= <U> (U);
  template <class U> ValVector <T>& operator*= <U> (U);
  template <class U> ValVector <T>& operator/= <U> (U);
private:
  int length;
  T *data;
};

template <class T>
inline ValVector <T>::ValVector () {
  data = 0; length = 0;
}

template <class T>
inline ValVector <T>::ValVector (int p1) :
  length (p1)
{
  data = new T [p1];
}

template <class T>
inline ValVector <T>::ValVector (int p1, T p2) :
  length (p1)
{
  data = new T [p1];
  for (int i = 0; i < p1; i++)
    data [i] = p2;
}

template <class T>
inline ValVector <T>::ValVector (const ValVector <T> &p) :
  length (p.size ())
{
  data = new T [length];
  for (int i = 0; i < p1; i++)
    data [i] = p [i];
}

template <class T>
inline ValVector <T>::~ValVector () {
  delete [] data;
}

template <class T>
inline ValVector <T>& ValVector <T>::operator= (const ValVector <T> &p)
{
  delete [] data;
  length = p.length();
  data = new T [length];
  for (int i = 0; i < p1; i++)
    data [i] = p [i];
  return *this;
}

template <class T, class U>
inline ValVector <T>& ValVector <T>::operator+= <U> (U p) {
  for (int i = 0; i < p1; i++)
    data [i] += p;
  return *this;
} 

#endif

=============================== END OF HEADER FILE ==================

This is the main file (valvector.C):

#include "valvector.H"

int main () {
  ValVector <double> vv (10, 0);
  vv += <double> 10.;
  
}




Good LUCK!!!
(Don't bother helping me, the code probaply just contains a weird
mistake, I'll find out myself)

Greetings, Pieter van Beek
-- 
----------------------------------------------------------
                                        Kobayashi Software
                                       Rode Kruislaan 1524
                                           1111 XE  Diemen
                                       tel. +31 20 4165015



More information about the Gcc-bugs mailing list