在限定的声明符-id之后查找名称
Name lookup after qualified declarator-id
Sec。3.4.3/3表示:
在声明符id是限定id的声明中,名称在定义命名空间范围;将查找限定id后面的名称在成员的类或命名空间的范围内。
3.4.3/3 N3797:中有一个代码示例
class X { };
class C {
class X { };
static const int number = 50;
static X arr[number];
};
X C::arr[number];// ill-formed:
// equivalent to: ::X C::arr[__C::number__];
// not to: C::X C::arr[__C::number__];
但我认为这不是真的,因为X C::arr[number]
中使用的非限定名称可以在封闭范围中找到,但X C::arr[C::number]
没有在封闭范围内搜索number
。这是打字错误吗?
据我所知,这个例子是正确的,直接从例子前面的段落开始:
在声明符id是限定id的声明中,命名在声明限定id之前使用的在定义命名空间范围;
因此,找到的X
将是::X
而不是C::X
,因为它在合格id 之前
和:
合格id后面的名称被查找在成员的类或命名空间的范围内
所以number
将是C::number
,因为它在限定id之后。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 在类定义之后定义一个私有方法
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 在循环C++中指定字符串之后,不会打印该字符串
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- C++宏忽略之后的内容
- 在C++中查找范围的长度
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何查找一个物体是在一个航路点之前还是之后
- unordered_map仅查找先前找到的项目之后的项目
- 在数组中查找索引 给出它之前和之后的总和
- 在限定的声明符-id之后查找名称
- 在字符数组中查找前一个字符之后的字符