繁体   English   中英

嵌套名称说明符的名称查找规则

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM