class T {
static void* operator new(std::size_t);
static void* operator new(std::size_t, CustomAllocator&);
static void operator delete(void*, std::size_t);
};
T* p = new(alloc) T;
上述代码将被编译器展成下述代码 ( 猜测,如果有高人知道如何查看编译器生成的中间代码,烦请告知)
// compiler-generated code for T* p = new(alloc) T;
//
void* __compilerTemp = T::operator new (sizeof(T), alloc); // 1
T* p;