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