// { dg-do run } #include int i; extern "C" int printf (const char *, ...); template struct map { ~map (); }; template map::~map () {} struct SomeClass { }; void* operator new(std::size_t numBytes, SomeClass&, const std::nothrow_t&) throw() { return operator new(numBytes, std::nothrow); } void operator delete(void* pMemory, SomeClass&, const std::nothrow_t&) throw() { i = 7; return operator delete(pMemory); } int main() { map< int, int>* pMap = new map< int, int>; delete pMap; if (i == 7) return 1; }