Я ищу причину, по которой это не скомпилируется (g cc, c ++ 14)
#include <iostream>
class Widget
{
private:
int i = 0;
public:
auto get() & { return i;}
auto get() && { return i+1;}
};
int main()
{
Widget w;
auto val = w.get();
std::cout<<val;
}
Ошибка
23:31: error: call of overloaded 'get()' is ambiguous
23:31: note: candidates are:
10:10: note: auto Widget::get()
11:10: note: auto Widget::get()
Это работает, если Я использую явный тип возврата для функций get ()
int get() & { return i;}
int get() && { return i+1;}