【发布时间】:2014-06-18 19:50:24
【问题描述】:
秒。 10.2 描述成员名称查找规则:
10.2/3:
C 中 f 的查找集,称为 S(f, C),由两个组件组成 sets:声明集,一组名为 f 的成员;和子对象 set,一组子对象,其中这些成员的声明(可能 包括使用声明)被发现。在声明集中, using-declarations 被它们指定的成员替换,并且 类型声明(包括注入的类名)被替换为 他们指定的类型。 S(f, C) 计算如下:
10.2/4:
如果 C 包含名为 f 的声明,则声明集 包含在 C 中声明的满足 f 的每个声明 查找发生的语言结构的要求。
考虑以下两个例子:
class A
{
void foo(){ A::a; } //S(a, A)={ static const int a; }
static const int a = 5;
}
和
class A
{
int b[A::a]; //S(a, A) is empty and the program is ill-formed
static const int a = 5;
}
实际的S(f,C)计算规则是什么,为什么?
【问题讨论】:
标签: c++ class language-lawyer