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