https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64969
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Or even simpler: auto f1(auto x) { return *x; } decltype(auto) f2(auto x) { return *x; } auto f3(auto x) -> int { return *x; } int i; auto r1 = f1(&i); auto r2 = f2(&i); auto r3 = f3(&i);