Warum gibt decltype (auto) hier eine Referenz zurück?
Ich denke (dachte) ich versteheauto
. Gleiches überdecltype
. In C ++ 14 kann man jedoch etwas Diabolisches wie @ habedecltype(auto)
als Rückgabetyp einer Funktion. Folgendes berücksichtigen
decltype(auto) foo()
{
int m = 1;
return m;
}
Der Rückgabetyp istint
, alles macht Sinn.
Jedoch
decltype(auto) foo()
{
int m = 1;
return (m);
}
kehrt zurückint&
(d. h. Verweis aufint
).
Ich habe absolut keine Ahnung, warum das passiert, warum machen diese Klammern überhaupt einen Unterschied !? Hoffe, jemand kann etwas Licht ins Dunkel bringen.
PS: Ich habe auch getaggt mitC++
da es viel mehr Leute gibt, die das @ überprüfC++
tag thanC++14
.