typedef __SIZE_TYPE__ size_t; extern "C" void *malloc (size_t); int i; struct S { S(int) { throw 3; } void *operator new(size_t s, int) { ++i; return malloc (s); } void operator delete(void *, int) { --i; } void operator delete(void *, int, int) ; }; int main () { try { new (7) S (12); } catch (int) { if (i) return 1; } }