[PR c++/84702] ICE with default tmpl arg of overload set
[official-gcc.git] / gcc / testsuite / g++.dg / eh / new1.C
blob2a68517b939f6d02a3ef2037700a439629f3bdd2
1 // PR c++/5757
2 // Test that when a constructor throws in a new-expression, we pass the
3 // right pointer to operator delete.
5 // { dg-do run }
6 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
8 #include <new>
10 int ret = 1;
12 void *ptr;
13 void * operator new[] (std::size_t s)
14 #if __cplusplus <= 199711L
15   throw (std::bad_alloc)
16 #endif
18   ptr = operator new (s);
19   return ptr;
22 void operator delete[] (void *p) throw ()
24   if (p == ptr)
25     ret = 0;
26   operator delete (p);
29 struct A
31   A() { throw 1; }
32   ~A() {}
35 int
36 main ()
38   try
39     {
40       A *p = new A[4];
41     }
42   catch (...) {}
43   return ret;