Почему не выводится низкоуровневая константа ссылки?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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