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,但不适用于新版本。