// { dg-do link } // Origin: Giovanni Bajo // DR127: Ambiguity in description of matching deallocation function #include #include struct A { // placement new, but can be called through normal new syntax. void* operator new(std::size_t size, float = 0.0f) { return ::operator new(size); } // The matching deallocation function must be called, which means // the placemente delete. void operator delete(void*); void operator delete(void*, float) {} A() { throw 5; } }; int main() { (void)new A; }