我的印象是,下面的脚注32适用于整个段落§3.4.1/8,而不仅仅是其第三个要点



[basic.lookup.uqual]/8

对于在成员函数体中使用的名称CCD_,在默认参数中,在异常指定中,在非静态数据成员(9.2(的brace或equal初始值设定项、或者在X的定义之外的类成员的定义中,在成员的声明符id31之后以以下方式之一声明:

  1. 在其使用的砌块或封闭砌块(6.3(中使用之前,或
  2. 应为X类成员或X(10.2(基类成员,或
  3. 如果X是类Y(9.7(的嵌套类,则应是Y的成员,或者应是Y基类的成员(此查找适用依次转到Y的封闭类,从最内层开始封闭类(,32

脚注:

32(无论成员函数是否在类X0的定义或是否定义了成员函数在包含CCD_ 11的定义的命名空间范围中

我说得对吗?

我看不出有任何理由将脚注与要点3联系起来。脚注中唯一说明的是,以类内方式定义的成员函数可以"看到"整个类(如果它是以类外方式定义的,情况也是如此(。它同样适用于所有要点。

例如,脚注32重申该代码是有效的

struct S
{
  void foo() { i = 42; }
  int i;
};

S::foo()的定义可以"看到"S::i的声明,即使S::iS::foo()的定义下方声明。您可以立即看到,上面的示例没有嵌套类,因此与要点3无关。

脚注并不意味着"此语句仅适用于要点3"。

这意味着"顺便说一句,这句话对要点3也是正确的,这是一个稍微复杂一点的场景,你可能对所说的事实有疑问"。

所以,虽然你客观上没有错,但这也不是任何编辑问题。

相关内容

最新更新