assign1.C   [plain text]


// PR c++/13009
// { dg-do run }

struct A {
  char a;
};

struct B: public virtual A {
  #if 0 // this piece of code works around the problem
  B& operator= (const B& other)
  {
    A::operator= (other);
  }
  #endif
};

struct C: public B {
  char c;
};

int main() {
  B b;
  b.a = 'b';
  C c;
  c.a = c.c = 'c';
  
  c.B::operator= (b);
  if (c.a != 'b' || c.c != 'c')
    return 1;
}