Вывод типа возврата с закрытой переменной-членом
Как было объяснено в этомВопросы и ответы вчераи 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.