考虑以下代码:
struct test {
auto func() -> decltype(data) {} // ERROR
int data;
};
int main() {
test t;
t.func();
}
它给出了以下错误:
main.cpp:2:29: error: 'data' was not declared in this scope
auto func() -> decltype(data) {}
但是,如果我放在data
上面func()
,它不会给出错误(实时代码):
struct test {
int data;
auto func() -> decltype(data) {}
};
...
所以我的问题是,为什么decltype
不考虑在它之后声明的成员(什么时候decltype
在方法声明中使用,而不是在定义中)?我还想知道在语言标准的未来迭代中这种行为是否有任何变化。
请注意,我问这个是因为我期望
decltype
表现不同。我的编码约定是将类数据成员放在类函数下方。当然,这种不同的行为会影响我组织班级成员的方式。如果您能提供任何可以保留我的编码约定的解决方法,我将不胜感激。