何时/为什么/如何在依赖库中显示不合格的名称?
对于高达 C++17,我在 [temp.dep]p3 中找到了这个措辞
在类或类模板的定义中,在类模板或成员的定义点或类模板的实例化期间,不检查依赖基类 (17.7.2.1) 的范围。成员。
但是看看最新的草案(在 eel.is 上),这似乎发生了变化。该处不再出现此文本,不知道此规则是否仍然存在,还是以较弱的形式(如果它们是依赖的,则可能会查找它们,但如果找到基类成员则不正确? ) 或者根本没有!
回答
什么也没有变。相关规则现在是[class.member.lookup]/4:
计算每个直接非依赖([temp.dep.type])基类中N的查找集[…]
因此不需要对 [temp] 中的名称查找规则进行特殊覆盖。