我的编译器是GCC 4.9.0。
struct A {
int n;
auto f() -> decltype(n) { // OK
return n;
}
};
struct B {
auto f() -> decltype(n) { // error: 'n' was not declared in this scope
return n;
}
int n;
};
int main() {
return A().f() + B().f();
}
为什么班级成员的顺序很重要?
答案 0 :(得分:3)
声明按顺序编译。这是你不能写的原因:
int y = x;
int x = 5;
内联函数的主体(包括c-tor初始化列表)将在稍后处理(当然首先解析,但直到类定义完成后才查找名称),因此它们可以引用类成员在以后的行。