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