[英]Name lookup rules for nested-name-specifier
我已阅读以下内容(3.4.3 / 1):
如果在嵌套名称说明符中的::作用域解析运算符之前没有decltype-specifier,则在:::之前的名称查找仅考虑专门针对类型的名称空间,类型和模板。
嵌套名称说明符的查找规则是什么?
例如:
#include <iostrem>
namespace A
{
int j=5;
}
int main()
{
std::cout << A::j //I assume that A will be searched as just *unqualified-name* appeared inside the function which is a member of namespace
}
第二个例子:
namespace A
{
namespace B
{
int j=5;
}
}
int main()
{
std::cout << A::B::j
}
在第二个示例中,A :: B是否将在名称空间中看起来是合格名称,这是真的吗? 也就是说,我们可以归纳定义嵌套名称说明符查找的规则。 但我在标准中找不到类似的内容。 真的吗?
是的,它是归纳性的,我想说的只是从措辞上得出的。 首先,让我们基于::
的关联性添加完整的括号:
(std::cout) << ((A::B)::j)
(以上内容只是为了演示解析器如何理解优先级,它不是有效的代码)。
因此j
由名称A::B
限定。 这是一个合格的名称,因此根据3.4.3进行了查找。
A::B
本身是一个限定名称(符合5.1.1 / 8概述的语法形式),因此会根据规则查找限定名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.