оператор new внутри пространства имен

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, но не для новой.

7
задан iammilind 2 June 2011 в 05:56
поделиться