struct B{ double operator()(){ return 1.0; }}; struct A { auto func() -> decltype(b()) { return b(); } B b;};
但是,如果我重组A,它会编译.
gcc 4.8表示在这个范围内没有声明’b’.
struct A { B b; auto func() -> decltype(b()) { return b(); }};
那么,第一个怎么了?
因此,函数体可以访问所有成员声明,包括后续的声明,但是函数原型只能看到前面的声明.