c++名称查找——

C++ name lookup --

本文关键字:查找 c++      更新时间:2023-10-16

标准说(括号是我的)

在3.4.1[非限定名称查找]中列出的所有情况下,将按照各自类别中列出的顺序搜索作用域以查找声明…

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


更新注释:

我希望编译器保持在容器中定义的名称,如unordered_set每个作用域和作用域链接在查找链中。

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

这里的"顺序"不是名称的顺序。它是作用域的顺序。在每个类别中,作用域按一定顺序列出(通常是"由内到外":从内部作用域到外部作用域)。这是搜索这些作用域的顺序。通常,当第一个作用域包含有问题的名称时,将导致搜索停止。