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

            Bug ID: 58876
           Summary: No non-virtual-dtor warning in std::unique_ptr
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yangzhe1990 at gmail dot com

When compiling the following code

#include <memory>

struct A {
    virtual void f() = 0;
};

struct B : public A {
    virtual void f() {};
};

int main() {
    std::unique_ptr<A> p(new B());
    A *q = NULL;
    delete q;
    return 0;
};

the compiler shows the following warning,

test.cpp: In function ‘int main()’:
test.cpp:14:9: warning: deleting object of abstract class type ‘A’ which has
non-virtual destructor will cause undefined behaviour
[-Wdelete-non-virtual-dtor]
  delete q;

But a warning at the unique_ptr line is also expected.

Reply via email to