| // { dg-do run } | |
| extern "C" void abort (); | |
| int d = 5; | |
| struct B | |
| { | |
| int x; | |
| B (int i) : x (i) { } | |
| ~B () { if (d-- != x) abort (); } | |
| }; | |
| struct C1 : public B { | |
| C1 (int i) : B (i) {} | |
| }; | |
| struct C2 : public B { | |
| C2 (int i) : B (i) {} | |
| }; | |
| struct D : public B { | |
| D (int i) : B (i) {} | |
| }; | |
| struct E : public B { | |
| E (int i) : B (i) {} | |
| }; | |
| struct A | |
| : public C1, C2, virtual public D, virtual public E | |
| { | |
| A () : D (0), E (1), C1 (2), C2 (3), x1(4), x2(5) {} | |
| B x1; | |
| B x2; | |
| }; | |
| int main () | |
| { | |
| A a; | |
| return 0; | |
| } |