Znam rodzaj i
poniżej w main()
jest int&
. Dlatego należy go zainicjować.Typ "i" poniżej w głównej(). Dlaczego to int i?
int& f(){ static int i = 1; return i; }
int main()
{
decltype(f()) i = f();
}
Ale stosując paragraf 5p5
w normie, dochodzę do wniosku, że wyrażenie f()
ma typ int
jako odniesienie jest odrzucany.
Od 7.1.6.2p4
, jak można powiedzieć, że wyrażenie f()
jest lwartością, ponieważ referencja została usunięta z funkcji return?
Należy zauważyć, że jest to prawie dokładnie sposób działania funkcji 'decltype (auto) C++ 14. – PlasmaHH