Как объяснялось в этом Q & A вчера, как 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.
Мой вопрос: эта ошибка также исчезнет в С++ 14 с выводом типа возврата, так что я могу оставить decltype
и иметь мой раздел private
в конце определения класса?
ПРИМЕЧАНИЕ: работает на основе ответа @JesseGood.