http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58140

Andrew Gallagher <andrewjcg at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrewjcg at gmail dot com

--- Comment #4 from Andrew Gallagher <andrewjcg at gmail dot com> ---
FWIW, I suppose one case where "-Wnon-virtual-dtor" is more useful than
"-Wdelete-non-virtual-dtor" is when the actual delete occurs in system
headers/libs.  This seems to be case when using std::unique_ptr, where the
actual "-Wdelete-non-virtual-dtor" warning is muted unless "-Wsystem-headers"
is used, which might not be desirable:

#include <memory>

class A {
public:
  virtual void a() {}
};

class B : public A {
public:
  virtual void b() {}
};

int main(int argc, char ** argv) {
  A *a = new B();
  delete a;  // triggers -Wdelete-non-virtual-dtor

  std::unique_ptr<A> p(new B());  // doesn't
}

Reply via email to