首页 > 解决方案 > 非限定名称何时/为什么/如何在依赖库中查找?

问题描述

对于 C++17,我在 [temp.dep]p3 中找到了这个措辞

在类或类模板的定义中,从属基类 (17.7.2.1) 的范围不会在类模板或成员的定义点或类模板的实例化期间或在非限定名称查找期间检查,或成员。

但看看最新的草案(在 eel.is 上),情况似乎发生了变化。该文本不再出现在该位置,并且我不知道该规则是否仍然存在,或者以较弱的形式(如果它们是依赖的可能会被查找,但如果找到基类成员则格式错误? ) 或根本没有!

标签: c++templatesc++20

解决方案


什么也没有变。相关规则现在是[class.member.lookup]/4:

计算每个直接非依赖 ([temp.dep.type]) 基类中N的查找集 […]

这样就不需要对 [temp] 中的名称查找规则进行特殊覆盖。


推荐阅读