Тип переменной через decltype(auto) в C++
Ссылочность, которую теряет обычный auto,
сохраняет decltype(auto): тип выводится
так же, как если бы переменную объявили
через decltype от выражения.
Функция, возвращающая ссылку на аргумент,
подходит, чтобы увидеть разницу: с auto
получится копия, с decltype(auto) -
та же ссылка.
Запишем pick, возвращающую первый
аргумент, и изменим исходную переменную
через decltype(auto):
#include <iostream>
int& pick(int& left, int& right) {
return left;
}
int main() {
int a = 1;
int b = 2;
decltype(auto) ref = pick(a, b);
ref = 9;
std::cout << a << "\n";
return 0;
}
Свяжите результат pick с auto,
измените копию и выведите a,
чтобы убедиться, что исходное значение
не меняется.