Обновить

Комментарии 12

Также следует обратить внимание на то, что переменные, которые участвуют в приведении типа, не обязательно объявлены в коде явно, они могут создаваться компилятором как временные и не иметь имени.

Можно привести какую-нибудь релевантную ссылку на такое понятие, как переменная без имени?

Всё-таки rvalue и variable – разные вещи. И так-то термин variable определён в стандарте C++ очень мутно, не надо его насиловать ещё больше.

Посмотрите раздел 8.6, последний пример, вторая инструкция. Там переменная типа double приводится к типу int, это значение куда-то записывается и создается ссылка на это записанное значение. А на что может ссылка ссылаться? Ссылка может ссылается только на переменную. У этой переменной нет имени, но есть время жизни, стандарт гарантирует, что ее время жизни будет не меньше, чам время жизни ссылки.

Ссылка ссылается на значение.

В приведенной в списке литературы работе применятся термин "анонимное временное значение", "анонимный временный объект". Для них отводится место в памяти, на них можно ссылаться через ссылку, для них определяется время жизни, к ним могут быть применены приведения типа, будет вызван деструктор когда надо. Чем они хуже именованных переменных? Возможно термин неименованная переменная не очень удачен чисто терминологически, но по моему суть отражает достаточно точно.

Суть в том, что в теории переменная - это имя и связанное с ним значение. Иногда переменная также прагматически рассматривается как именованная область памяти. Но весь её смысл всё равно в том, что она имеет имя.

Спасибо, упустил. Поправлю в ближайшее время.

Поправил. Еще раз спасибо.

"идентификатор массива почти в любом контексте неявно приводится к указателю на первый элемент"
Не на первый, а на нулевой.

Спасибо! Поправлю.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации