// 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
