Рассмотрим следующее:
int ival = 1.01;
int &rval = 1.01; // error: non-const reference to a const value.
int &rval = ival;
rval = 1.01;
Первое присвоение & rval литеральному значению завершается неудачно, как и ожидалось. Если я закомментирую эту строку, код компилируется и запускается. Я понимаю, почему инициализация не удалась, но я запутался, почему присвоение rval работает в последней строке. Я не думал, что разрешено присваивать ссылку буквальному значению.
РЕДАКТИРОВАТЬ: Спасибо за быстрые ответы. Я испытываю желание удалить это, чтобы скрыть свой стыд, но я думаю, что оставлю это здесь, чтобы все остальные могли указать и смеяться.
В целях собственной безопасности я работаю над упражнениями из книги (учебник по С ++), и эта проблема касается справочной информации инициализация . Тем не менее, это довольно неловко, что так сильно упустил из виду точку отсчета в первую очередь. :)