Информация об изменениях

Сообщение Re: Передача объекта, возвращаемого функцией, в другую функц от 08.11.2019 3:51

Изменено 08.11.2019 4:03 Molchalnik

Re: Передача объекта, возвращаемого функцией, в другую функцию.
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Привет всем.


КД>Есть интерфейс t_errors.


КД>У него две реализации — t_errors_without_limits и t_errors_with_limits


КД>Есть два метода, возвращающие экземпляры этих реализацией:

КД>
КД>t_errors_without_limits get_errors_without_limits();
КД>

КД>
КД>add_current_errors(ctx.get_errors_without_limits());
КД>//...
КД>add_current_errors(ctx.get_errors_with_limits());
КД>


в старых плюсах это чистое UB. Передача ссылки на временный объект на стеке, время жизни которого закончилось. В новых плюсах есть расширение времени жизни переменной. Но оно весьма ограничено. Ты уверен, что оно здесь сработало? см. мой вопрос — народ утверждает, что расширение времени жизни переменной через rvalue не работает

если так, то беря адрес и разыменовывая его, ты дуришь компилер, но не убираешь UB
Re: Передача объекта, возвращаемого функцией, в другую функц
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Привет всем.


КД>Есть интерфейс t_errors.


КД>У него две реализации — t_errors_without_limits и t_errors_with_limits


КД>Есть два метода, возвращающие экземпляры этих реализацией:

КД>
КД>t_errors_without_limits get_errors_without_limits();
КД>

КД>
КД>add_current_errors(ctx.get_errors_without_limits());
КД>//...
КД>add_current_errors(ctx.get_errors_with_limits());
КД>


в старых плюсах это чистое UB. Передача ссылки на временный объект на стеке, время жизни которого закончилось. В новых плюсах есть расширение времени жизни переменной. Но оно весьма ограничено. Ты уверен, что оно здесь сработало? см. мой вопрос — народ утверждает, что расширение времени жизни переменной через rvalue не работает. см. мой вопрос
Автор: Molchalnik
Дата: 08.11.19


если так, то беря адрес и разыменовывая его, ты дуришь компилер, но не убираешь UB