http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59246
Bug ID: 59246 Summary: GCC should issue runtime error for calling pure virtual function with definition Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: boostcpp at gmail dot com Consider the following code: struct Base { virtual void f() = 0 ; virtual ~Base() ; } ; // pure virtual function with definition void Base::f() { } Base::~Base() { // call by unqualified name is virtual function call. // virtual function call during destruction is undefined. f() ; } GCC does not issue runtime abort for a virtual function that also has definition. According to the standard(10.4 paragraph 6), this is undefined. Since this is undefined, GCC can do anything. But I think GCC should issue runtime abort if it is technically possible. Clang issues runtime abort for this code.