No Subject
Miloslav GRUNDMANN
grundman@mip.ups-tlse.fr
Tue Nov 18 12:26:00 GMT 1997
//
// This is really a strange bug, I was unable to focus it better
// gcc version egcs-2.90.17 971114 (gcc2-970802 experimental)
// alpha-dec-osf4.0
// there is something wrong in virtual functions
//
class base;
class Expr;
class Plus;
class base_iterator {};
template <class T> class binary_iterator : public base_iterator {};
class Expr {
public :
Expr() {};
Expr(const base*){};
};
class base
{
public :
virtual double& output(double& stream) const = 0;
virtual base_iterator& begin() const
{ return * new base_iterator; };
virtual Expr power() const;
virtual Expr operator-(const base& in) const {return this;};
};
class binary : public base {
public :
double& output(double& stream) const { return stream;};
binary_iterator<int>& begin() const
{ return * new binary_iterator<int>(); };
};
class Plus : public binary {
public :
double& output(double& stream) const
{ return this->binary::output(stream); };
};
class Minus : public binary {
public:
double& output(double& stream) const
{ return static_cast<const binary*>(this)->output(stream); };
};
Expr base::power() const { return new Plus; };
void main(){Expr a = new Plus; }
More information about the Gcc-bugs
mailing list