1// { dg-do run } 2extern "C" void abort(); 3 4int ic; 5 6struct X 7{ 8 X() { ++ic; } 9 X( const X & ) { ++ic; } 10 ~X() { if (--ic < 0) abort(); } 11}; 12 13struct V 14{ 15 virtual ~V() {} 16}; 17 18struct A : public virtual V 19{ 20}; 21 22struct B : public virtual V 23{ 24 virtual void foo( X ) = 0; 25}; 26 27struct D : public A, public virtual B 28{ 29 virtual void foo( X ) {} 30}; 31 32int main() 33{ 34 B *b = new D; 35 b->foo( X() ); 36} 37