试图理解C ++ 14标准中的[class.qual] / 2

时间:2015-04-24 19:12:49

标签: c++ language-lawyer c++14

[class.qual] / 2

  

在查找中,函数名称不被忽略 33 和    nested-name-specifier 指定一个C类:

     
      
  1. 如果在 nested-name-specifier 之后指定的名称(在C中查找)是C的注入类名(第9条),或者
  2.   
  3. using-declaration (7.3.3)中是 member-declaration ,如果在嵌套名称规范之后指定的名称是相同的   标识符 simple-template-id 模板名称   嵌套名称说明符的最后一个组件,
  4.         

    该名称被认为是命名类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?

0 个答案:

没有答案