正如昨天的问答中所解释的那样,g++ 4.8 和 Clang 3.3 都正确地抱怨下面的代码,并出现类似“'b_' is not declared in this scope”这样的错误
#include <iostream>
class Test
{
public:
Test(): b_(0) {}
auto foo() const -> decltype(b_) // just leave out the -> decltype(b_) works with c++1y
{
return b_;
}
private:
int b_;
};
int main()
{
Test t;
std::cout << t.foo();
}
将private
部分移动到类定义的顶部会消除错误并打印 0。
我的问题是,这个错误是否也会在 C++14 中通过 return type deduction 消失,以便我可以在类定义的末尾省略decltype
and部分?private
注意:它实际上是基于@JesseGood 的回答。