Почему не выводится низкоуровневая константа ссылки?C++

Программы на C++. Форум разработчиков
Anonymous
Почему не выводится низкоуровневая константа ссылки?

Сообщение Anonymous »

Когда мы используем auto для определения типа объекта, константы верхнего уровня игнорируются, например

Код: Выделить всё

const int i = 0; //i is top-level const
auto j = i; //j is an int
Однако константы низкого уровня никогда не игнорируются, например

Код: Выделить всё

const int * ptr = nullptr //ptr is low-level const;
auto ptr2 = ptr; //ptr2 is also const int*
Но когда я определяю низкоуровневую ссылку на константу и использую auto, константа теряется

Код: Выделить всё

int var;
const int &ref = var; //ref is low-level const reference
auto ref2 = ref; //ref2 is int! I had this previously as int&, which is wrong`
Почему такое поведение?
Проверено на компиляторе C++ VS2017.
Изменить: спасибо за все ответы. !
Таким образом, auto не выводит ссылки https://www.learncpp.com/cpp-tutorial/t ... and-const/

Подробнее здесь: https://stackoverflow.com/questions/784 ... ot-deduced

Вернуться в «C++»