// { 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; | |
} |