Re[5]: Не могу найти пример бага, который я не понял
От: qaz77  
Дата: 06.11.24 10:26
Оценка: +1
Здравствуйте, Igore, Вы писали:

I>1) Разве константная ссылка не продляет время жизни временного объекта


Продлевается только в одном scope:
{
   {
      const int &r = 42;
      // тут r жива  
   }
   // а тут уже нет
}


I>2) В данном примере почему 42 не попадает под .rodata, оптимизатор?


Значение инта компилятор может подставить инлайн в команду.
Все зависит от того, что с ссылкой делается.
Например, если берется адрес &r и используется, то компилятор должен какой-то адрес выдать, на стеке или в константных данных.

В случае с ссылкой-членом данных и конструктором в объекте неявно указатель будет храниться.
S>struct Data {
S>  const int & _i;
S>  explicit Data(const int & i) : _i{i} {}
S>};

Т.е. sizeof(Data) == sizeof(int*) и ничем особо протухшего указателя не отличается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.