一个名称既存在于未命名的命名空间中,又存在于本地命名空间中,引用该名称是否会导致二义性错误?还是解决方案已经明确定义?我在G++和Clang上看到以下代码可以正常工作,但在MSVC上效果不佳。
namespace Foo
{
class Bar
{
public:
int x;
};
}
namespace
{
class Bar
{
public:
int y;
};
}
namespace Foo
{
void tester()
{
Bar b;
}
}
int main()
{
Foo::tester();
return 0;
}