a + b - a.operator+(b) operator+(a, b).
, new Foo(x, y, z) operator new(Foo, x, y, z) - . :
void* address = operator new(sizeof(Foo));
try {
new(address) Foo(x, y, z);
} catch (...) {
operator delete(address);
}
, operator new , , new. , allocate_memory - . operator+.