1// Build don't link: 2 3// Copyright (C) 1999, 2001 Free Software Foundation 4 5// by Alexandre Oliva <oliva@dcc.unicamp.br> 6// simplified from bug report by K. Haley <khaley@bigfoot.com> 7// based on analysis by Martin v. Loewis 8 9// [class.dtor]/11: delete must be implicitly checked for 10// accessibility only in the definition of virtual destructors, 11// implicitly defined or not. 12 13struct foo { 14 foo() {} 15private: 16 void operator delete(void *) {} // ERROR - private 17} foo_; 18 19struct bar : foo { 20 ~bar() { 21 delete this; // ERROR - delete is private 22 // An implicit invocation of delete is emitted in destructors, but 23 // it should only be checked in virtual destructors 24 } // gets bogus error - not virtual 25} bar_; 26 27struct baz : foo { 28 virtual ~baz() {} // ERROR - delete is private in vdtor 29} baz_; 30 31struct bad : baz {} bad_; // ERROR - delete is private in vdtor 32