嵌套名称说明符的名称查找规则
Name lookup rules for nested-name-specifier
我读了以下(3.4.3/1):
如果嵌套名称说明符中的::范围解析操作符不是查找前面的名称::只考虑其专门化的名称空间、类型和模板类型。
嵌套名称说明符的查找规则是什么?
例如:#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概述的语法形式),因此根据限定名的规则查找。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 此代码是否违反一个定义规则
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 假设声明中某些上下文中需要的名称查找规则是什么
- 在类内定义的友元函数与类外定义的友元函数的查找规则之间的差异
- 哪里定义了查找名称最直接声明的名称查找规则
- 如何让叮当揉捏两相查找的规则
- 哪个查找规则阻止编译器查找函数
- 模板功能中的名称查找规则
- 在C++11中查找运算符的规则
- 成员名查找规则
- 嵌套名称说明符的名称查找规则
- 什么名称查找规则适用于静态 const 数据成员定义中的名称
- 查找规则多边形的顶点
- x / y的确切名称查找规则是什么?