请考虑以下代码:
#include <iostream>
namespace Foo{
void ool() // Version A
{
std::cout << "Foo::ool" << std::endl;
}
inline namespace Bar{
void ool() // Version B
{
std::cout << "Foo::Bar::ool" << std::endl;
}
}
}
int main()
{
Foo::ool(); // <- error
}
Clang 和 G++ 都正确地标记Foo::ool
为模棱两可。我可以Foo::Bar::ool
毫无问题地调用,但有没有办法在不更改其声明的情况下调用版本 A?
我发现处于类似位置的人试图了解发生了什么,但我没有看到这种情况的解决方案。
我处于这种情况是因为我有一个项目,其中包含 and 的声明std::__1::pair
,std::pair
在不同的地方创建,并且std::__1
是一个内联命名空间。std::pair
我需要代码明确指向。有解决方案吗?