您能解释一下为什么在该代码中名称空间查找失败吗?
namespace B {
namespace C {
int i;
}
}
namespace A {
namespace B {
void foo() {
// why does not much A::B::C
B::C::i = 3;
}
}
}
是的,我知道 ::B::C::i 可以工作,因为我们指示全局命名空间,但我很好奇为什么当我们不在 B 之前使用 :: 时,查找不会在 B::C 命名空间之外搜索。
提前致谢
答案 0 :(得分:2)
在命名空间 ::A::B
内,对 B
的非限定查找会找到命名空间 ::A::B
而不是找到命名空间 ::B
。并且没有名称 ::A::B::C
,因此在找到的 C
中对 ::A::B
的限定查找失败。