就像在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/

10-17 00:30