// { dg-do run } #include <new> #include <stddef.h> int i; extern "C" int printf (const char *, ...); template <class T, class U> struct map { ~map (); }; template <class T, class U> map<T, U>::~map () {} struct SomeClass { }; void* operator new(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; }