[basic.lookup.uqual]/8
对于在成员函数体中使用的名称CCD_,在默认参数中,在异常指定中,在非静态数据成员(9.2(的brace或equal初始值设定项、或者在
X
的定义之外的类成员的定义中,在成员的声明符id31之后以以下方式之一声明:
- 在其使用的砌块或封闭砌块(6.3(中使用之前,或
- 应为
X
类成员或X
(10.2(基类成员,或- 如果
X
是类Y
(9.7(的嵌套类,则应是Y
的成员,或者应是Y
基类的成员(此查找适用依次转到Y
的封闭类,从最内层开始封闭类(,32或
脚注:
32(无论成员函数是否在类
X
0的定义或是否定义了成员函数在包含CCD_ 11的定义的命名空间范围中
我说得对吗?
我看不出有任何理由将脚注与要点3联系起来。脚注中唯一说明的是,以类内方式定义的成员函数可以"看到"整个类(如果它是以类外方式定义的,情况也是如此(。它同样适用于所有要点。
例如,脚注32重申该代码是有效的
struct S
{
void foo() { i = 42; }
int i;
};
即S::foo()
的定义可以"看到"S::i
的声明,即使S::i
在S::foo()
的定义下方声明。您可以立即看到,上面的示例没有嵌套类,因此与要点3无关。
脚注并不意味着"此语句仅适用于要点3"。
这意味着"顺便说一句,这句话对要点3也是正确的,这是一个稍微复杂一点的场景,你可能对所说的事实有疑问"。
所以,虽然你客观上没有错,但这也不是任何编辑问题。