C++类成员名称查找规则中注1是什么意思?

问题描述

来自http://eel.is/c++draft/class.member.lookup#1

从程序点P在范围X中对名称N搜索X中的单个搜索对于 N from P 除非 X 是类或类模板 T 的范围,在这种情况下,以下步骤定义搜索结果。

[注意 1:仅当 Nconversion-function-id 或单次搜索找不到任何结果时,结果才会不同。 — 尾注]

我很难理解 Note。似乎从类范围中进行“单一搜索”会在名称空间范围内找到前面的声明,因为名称空间范围包含类范围。但是,正如我们所知,如果名称也被声明为非依赖基类的成员,则基类成员优先于命名空间成员。 注 1 似乎与此相矛盾,因为它基本上是在说“如果 N 不是转换函数 ID,那么您可以只进行普通的单一搜索,并且仅当您失败时找到任何东西,然后使用本节中的过程”。但是单次搜索将通过找到命名空间范围声明而成功,而类成员查找将产生不同的结果。

我理解的错误在哪里?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)