Похож, что operator new и operator new[] имеют точно такую же подпись:
void* operator new( size_t size );
void* operator new[]( size_t size );
и сделать то же самое: либо верните указатель на достаточно большой блок необработанной (не инициализированной в любом случае) памяти, либо выбросьте исключение.
Также operator new вызывается внутри, когда я создаю объект с new и operator new[] - при создании массива объектов с new[]. Тем не менее, вышеупомянутые две специальные функции вызываются С++ внутренне точно таким же образом, и я не вижу, как два вызова могут иметь разные значения.
Какова цель иметь две разные функции с точно такими же сигнатурами и точно такое же поведение?