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では機能しましたが、新しいバージョンでは機能しませんでした。