Wenn eine Klasse den Operator new definiert (z.B. mit eigener Signatur) ist das Standard-new überdeckt:
typedef void (*fuptr()) class X { ... public: void* operator new(size_t size, fuptr f); }; void fu(); X *px1 = new(fu) X; X *px2 = new X; // FEHLER!
Statt den Anwender zu zwingen, ::new zu verwenden:
class X { ... public: void* operator new(size_t size, fuptr f); void* operator new(size_t size) { return ::new char[size]; } };