// { 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;
}