37 lines
401 B
C
37 lines
401 B
C
// { dg-do run }
|
|
extern "C" void abort();
|
|
|
|
int ic;
|
|
|
|
struct X
|
|
{
|
|
X() { ++ic; }
|
|
X( const X & ) { ++ic; }
|
|
~X() { if (--ic < 0) abort(); }
|
|
};
|
|
|
|
struct V
|
|
{
|
|
virtual ~V() {}
|
|
};
|
|
|
|
struct A : public virtual V
|
|
{
|
|
};
|
|
|
|
struct B : public virtual V
|
|
{
|
|
virtual void foo( X ) = 0;
|
|
};
|
|
|
|
struct D : public A, public virtual B
|
|
{
|
|
virtual void foo( X ) {}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
B *b = new D;
|
|
b->foo( X() );
|
|
}
|