次の C++ コードの断片を考えてみましょう。
namespace
{
void f()
{
}
class A
{
void f()
{
::f(); // VC++: error C2039: 'f' : is not a member of '`global namespace''
}
};
}
GCC はこれを問題なくコンパイルします。Visual C++ 2008 がコンパイルに失敗し、C2039 エラーが発生します。これら 2 つのコンパイラのうち、どちらが正しいですか? その「グローバル」 f
を適切に参照する方法はありますか?
編集:ザックは試してみることを提案しましたが、両方のコンパイラで動作します。私には少し奇妙に見えます。
namespace
{
void f()
{
}
class A
{
void f();
};
}
void A::f()
{
::f();
}