问题描述
来自http://eel.is/c++draft/class.member.lookup#1:
从程序点P在范围X
中对名称N
的搜索是X
中的单个搜索对于 N
from P
除非 X
是类或类模板 T
的范围,在这种情况下,以下步骤定义搜索结果。
[注意 1:仅当 N
是 conversion-function-id 或单次搜索找不到任何结果时,结果才会不同。 — 尾注]
我很难理解 Note。似乎从类范围中进行“单一搜索”会在名称空间范围内找到前面的声明,因为名称空间范围包含类范围。但是,正如我们所知,如果名称也被声明为非依赖基类的成员,则基类成员优先于命名空间成员。 注 1 似乎与此相矛盾,因为它基本上是在说“如果 N
不是转换函数 ID,那么您可以只进行普通的单一搜索,并且仅当您失败时找到任何东西,然后使用本节中的过程”。但是单次搜索将通过找到命名空间范围声明而成功,而类成员查找将产生不同的结果。
我理解的错误在哪里?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)