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(); } };
那么,第一个怎么了?
因此,函数体可以访问所有成员声明,包括后续的声明,但是函数原型只能看到前面的声明.