[class.qual] / 2 :
在查找中,函数名称不被忽略 33 和 nested-name-specifier 指定一个C类:
- 如果在 nested-name-specifier 之后指定的名称(在C中查找)是C的注入类名(第9条),或者
- 在 using-declaration (7.3.3)中是 member-declaration ,如果在嵌套名称规范之后指定的名称是相同的 标识符或 simple-template-id 的模板名称 嵌套名称说明符的最后一个组件,
醇>该名称被认为是命名类C的构造函数。[ 注意:例如,构造函数不是可接受的查找结果 在 elaborated-type-specifier 中,因此不会使用构造函数 代替注入类名。 -end note]这样的构造函数 name只能在声明的 declarator-id 中使用 命名构造函数或在 using-declaration 中命名。
(33)忽略函数名称的查找包括 出现在嵌套名称说明符中的名称,a elaborated-type-specifier 或 base-specifier 。
如果我们考虑以下示例
struct A { A(); };
struct B: public A { B(); };
A::A() { }
说:
是正确的A
中的第一个A::A() {}
会忽略函数名称,因为A
属于嵌套名称说明符 ?A
中的第二个A::A() {}
并不会忽略函数名称,因为A
不属于嵌套 - name-specifier,也不是精心设计的类型说明符,也不是base-specifier?