| // { dg-do assemble } |
| |
| // 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 *) {} // { dg-error "" } private |
| } foo_; |
| |
| struct bar : foo { |
| ~bar() { |
| delete this; // { dg-error "" } delete is private |
| // An implicit invocation of delete is emitted in destructors, but |
| // it should only be checked in virtual destructors |
| } // { dg-bogus "" } not virtual |
| } bar_; |
| |
| struct baz : foo { |
| virtual ~baz() {} // { dg-error "" } delete is private in vdtor |
| } baz_; |
| |
| struct bad : baz {} bad_; // { dg-error "" } delete is private in vdtor |