При создании локальных переменных правильно ли использовать (const) auto&
или auto
?C++ auto & vs auto
.: например
SomeClass object;
const auto result = object.SomeMethod();
const auto& result = object.SomeMethod();
или
Где SomeMethod() возвращает не элементарное значение - может быть другой определенный пользователем тип. Я понимаю, что const auto& result
верен, так как результат, возвращаемый SomeMethod(), вызовет конструктор копирования для возвращаемого типа. Пожалуйста, поправьте меня, если я ошибаюсь.
Что относительно примитивных типов? Я предполагаю, что const auto sum = 1 + 2;
верен.
Это относится также к диапазону, основанному на циклах?
for(const auto& object : objects)
Я настоятельно рекомендую вам прочитать следующее: https://www.safaribooksonline.com/library/view/effective-modern-c/9781491908419/ch01.html Первые две главы являются бесплатными и описывают вывод типа шаблона, который по существу как работает 'auto' (за исключением специфического случая' initializer_list', которые не выведены в контексте шаблона), затем выведите 'aut' тип вывода. – vsoftco