在C++中,如果我有
namespace myNamespace {
boost::whatever();
}
编译器会在boost命名空间还是myNamespace::boost中寻找what()?
最佳答案
问题不是关于它是否会寻找boost::whatever
,而是它会在哪里找到boost
本身。
如果您具有名称为boost
的嵌套 namespace 定义,它将在声明时隐藏全局boost
namespace 。全局boost
命名空间将一直可见,直到声明myNamespace::boost
(第3.3.2 / 2节)为止。
因此,如果在创建嵌套名称boost::whatever()
之前调用myNamespace::boost
,它将查找全局boost
命名空间。如果您始终希望它在全局 namespace 中找到::boost
,则可以使用boost
来限定名称。