1 // { dg-do assemble } 2 // GROUPS passed visibility 3 extern "C" int printf( const char *, ...); 4 5 class B { 6 public: B()7 B() { } ~B()8 virtual ~B() { printf( "B::~B\n"); } 9 }; 10 11 class D : public B { 12 public: ~D()13 virtual ~D() { printf( "D::~D\n"); } 14 void operator = ( int i) { this->~B(); } 15 }; 16 17 int main()18main() 19 { 20 D * pd = new D; 21 B * pb = pd; 22 delete pb; 23 return 0; 24 } 25