------- Comment #3 from jason at gcc dot gnu dot org  2010-02-23 01:45 -------
Reduced a bit:

extern "C" void abort ();

struct A {
  virtual void dummy() {}
};

struct B {
  virtual B *clone() = 0;
};

struct C : public virtual B { };
struct D : public virtual B { };

struct E : public C, public D {
  virtual E *clone() = 0;
};

struct F* fp;
struct F : public A, public E {
  F(int) { fp = this; }

  virtual E *clone() {
    if (fp != this)
      abort ();
  }
};

int main() {
  F *a = new F(123);
  B *c = a;
  c->clone();
}


-- 


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

Reply via email to