私の理解では、名前空間の前に追加::
すると、using ステートメントや親名前空間に関係なく、グローバル名前空間が参照されます。それが事実であり、私が何も誤解していない場合、なぜそのようなコードはコンパイルされるのですか (少なくとも Visual Studio では):
namespace Foo {
namespace Bar {
class X;
}
}
using namespace Foo;
int main(void)
{
::Bar::X x;
}