就像在Q&A yesterday中所解释的那样,g++ 4.8和Clang 3.3都正确地提示了下面的代码,并出现类似“'b_'未在此范围内声明”的错误
#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中使用返回类型推断消除此错误,以便我可以省略
decltype
并在类定义的末尾添加我的private
部分吗?注意:它基于@JesseGood的答案为actually works。
最佳答案
不,但现在不再需要此功能,因为您可以说
decltype(auto) foo() const {
return b_;
}
这将自动从其主体中推断出返回类型。
关于c++ - 使用私有(private)成员变量的返回类型推导,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16800578/