// PR c++/52746 // { dg-do run } extern "C" int printf(const char*,...); extern "C" void abort(); bool db; struct A { virtual ~A() {} }; struct B : public A { virtual ~B() { db = true; } }; template void test() { B * b = new B; A * a = b; a->~A(); ::operator delete(b); } int main() { test<0>(); if (!db) abort(); }