Comments 14
Также следует обратить внимание на то, что переменные, которые участвуют в приведении типа, не обязательно объявлены в коде явно, они могут создаваться компилятором как временные и не иметь имени.
Можно привести какую-нибудь релевантную ссылку на такое понятие, как переменная без имени?
https://en.cppreference.com/w/cpp/language/value_category.html
Подозреваю, что автор имеет в виду rvalue
Посмотрите раздел 8.6, последний пример, вторая инструкция. Там переменная типа double приводится к типу int, это значение куда-то записывается и создается ссылка на это записанное значение. А на что может ссылка ссылаться? Ссылка может ссылается только на переменную. У этой переменной нет имени, но есть время жизни, стандарт гарантирует, что ее время жизни будет не меньше, чам время жизни ссылки.
Ссылка ссылается на значение.
В приведенной в списке литературы работе применятся термин "анонимное временное значение", "анонимный временный объект". Для них отводится место в памяти, на них можно ссылаться через ссылку, для них определяется время жизни, к ним могут быть применены приведения типа, будет вызван деструктор когда надо. Чем они хуже именованных переменных? Возможно термин неименованная переменная не очень удачен чисто терминологически, но по моему суть отражает достаточно точно.
Попрвьте 2.1.2, T(x) в С не взлетит, это конструктор С++ (точнее, functional cast)
"идентификатор массива почти в любом контексте неявно приводится к указателю на первый элемент"
Не на первый, а на нулевой.
Спасибо! Поправлю.
Удобнее разделять термины нумерация и индексация, чем смешивать их, перепутывая с общепринятым значением.
Нумерация с единицы, индексация с нуля.
Первый элемент имеет нулевой индекс. Второй элемент - индекс 1. Всего два элемента.
Это также позволяет удобно именовать переменные в коде. Например, если в имени переменной есть num, то чтобы получить index/id нужно отнять еденицу. И наоборот.
"Нулевой" индекс, а элемент по нулевому индексу всё же "первый"
Приведение типа в C++