C ++名称查找 -

时间:2015-08-03 04:55:16

标签: c++ language-lawyer

标准说(括号内)

  

在3.4.1 [非限定名称查询]中列出的所有情况下,将按照各个类别中列出的顺序搜索范围...

为什么名称会保存在某种有序列表中?毕竟,除了函数重载和名称隐藏之外,我认为名称在命名空间中是唯一的。

更新以发表评论:

我希望编译器保持在容器中定义的名称,例如 unordered_set ,每个范围和范围都链接在一个查找链中。

我想知道为什么名称会被分类为每个类别的列表(我认为是变量,typedef,类似结构,函数,模板等),并且这些列表进一步排序。

1 个答案:

答案 0 :(得分:6)

在这种情况下,“订单”不是名称的顺序。它是范围的顺序。在每个类别中,范围按特定顺序列出(通常为“由内而外”:从内部范围到外部范围)。这是搜索这些范围的顺序。通常,包含相关名称的第一个范围会导致搜索停止。