Re[7]: Не могу найти пример бага, который я не понял
От: Кодт Россия  
Дата: 20.11.24 00:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>В исходном примере, скорее, так:

V>
V>{
V>  const int &tmp = 42; // текущий scope
V>  {
V>    const int &r = tmp; // scope выражения-вызова конструктора
V>  }
V>}
V>


V>ИМХО, время жизни временного объекта 42 должно быть продлено.


Ну вот вообще не так!

Проблема же в том, что функция min получает ссылки — и возвращает ссылки. А принимающая сторона ничего не знает про время жизни этих возвращённых ссылок, поэтому и продлевать не может.

Нужно написать такую версию min, которая если получает хотя бы один rvalue reference, то должна возвращать rvalue, и пусть принимающая сторона делает copy elision и продлевает жизнь как хочет, на своё усмотрение.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.