在C ++标准的哪里定义了不合格的* mem-initializer-id *?

唤醒巴西

这是§12.6.2/ 2(C ++ 14)中的第一句话:

mem-initializer-id中,在构造函数的类的范围内查找初始的不合格标识符,如果未在该范围内找到,则在包含构造函数的定义的范围内进行查找。

我想知道在§3.4.1非限定名称查找中,上面提到的查找(“在构造函数类的范围内”)是在哪里定义的?如果不存在,我在规范中哪里可以找到该定义?

我的第一个猜测是§3.4.1/ 7,但我认为这是不正确的,因为在mem-initializer-id中初始化的构造方法的类的非静态数据成员似乎不适合本段4个要点规定的条件。

本·沃格特

是3.4.1 / 8。您可能会错过的是mem-initializer-list是构造函数的函数主体的一部分。请参见function-body的语法生成

功能体

  • ctor初始化程序选择 复合语句

  • 功能尝试块

  • = default ;

  • = delete ;

从3.3.7 / 1开始,它在所有类成员的潜在范围内,包括那些定义点在构造函数定义之后的类。

在类中声明的名称的潜在范围不仅包括名称声明点之后的声明性区域,还包括所有函数体,默认参数,异常规范非静态花括号或相等初始化器该类中的数据成员(包括嵌套类中的此类内容)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章