namespace X
{
void* operator new (size_t);
}
выдает сообщение об ошибке как:
error: ‘void* X::operator new(size_t)’ may not be declared within a namespace
Это ошибка компилятора gcc? В более старой версии gcc это работает. Любая идея, почему это не разрешено?
Случай использования: я хотел разрешить только пользовательские operator new/delete
для классов и запретить глобальные new/operator
. Вместо ошибки компоновщика было легко поймать ошибку компилятора; поэтому я закодировал:
namespace X {
void* operator new (size_t);
}
using namespace X;
Это работало для старой версии gcc, но не для новой.