// Build don't link: // Copyright (C) 1999, 2001 Free Software Foundation // by Alexandre Oliva <oliva@dcc.unicamp.br> // simplified from bug report by K. Haley <khaley@bigfoot.com> // based on analysis by Martin v. Loewis // [class.dtor]/11: delete must be implicitly checked for // accessibility only in the definition of virtual destructors, // implicitly defined or not. struct foo { foo() {} private: void operator delete(void *) {} // ERROR - private } foo_; struct bar : foo { ~bar() { delete this; // ERROR - delete is private // An implicit invocation of delete is emitted in destructors, but // it should only be checked in virtual destructors } // gets bogus error - not virtual } bar_; struct baz : foo { virtual ~baz() {} // ERROR - delete is private in vdtor } baz_; struct bad : baz {} bad_; // ERROR - delete is private in vdtor