Ответ 1
Из часто задаваемых вопросов isocpp С++ 14 на decltype(auto)
:
Примечание. decltype (auto) в первую очередь полезен для вывода возвращаемого типа функций пересылки и аналогичных оболочек, как показано выше, где вы хотите, чтобы тип точно "отслеживал" какое-то выражение, вызываемое вами. Однако decltype (auto) не является широко используемой функцией, кроме этого. В частности, хотя он может быть использован для объявления локальных переменных, это, вероятно, просто антипаттерн, поскольку ссылка на локальные переменные не должна зависеть от выражения инициализации. Кроме того, он чувствителен к тому, как вы пишете оператор return. Эти две функции имеют разные типы возврата.
look_up_a_string_1
возвращает astring
, аlook_up_a_string_2
возвращает astring&
.
decltype(auto) look_up_a_string_1() { auto str = lookup1(); return str; }
decltype(auto) look_up_a_string_2() { auto str = lookup1(); return(str); }