http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59246
--- Comment #1 from Ryou Ezoe <boostcpp at gmail dot com> --- According to the de facto standard C++ ABI: http://mentorembedded.github.io/cxx-abi/abi.html#pure-virtual __cxa_pure_virtual will be called: > if the user calls a non-overridden pure virtual function, which has undefined > behavior according to the C++ Standard. When this abstract class Base's destructor was called, class objects derived from Base are already destructed. So it is non-overridden and it is also undefined behavior.