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

Сообщение Re[8]: && member? от 11.09.2021 8:58

Изменено 11.09.2021 9:24 rg45

Re[8]: && member?
Здравствуйте, T4r4sB, Вы писали:

TB>Ну мув же.


Даже если мув и есть, то он формальный. Фактически образуется две разные ссылки (по одной в каждом объекте). Причем, к временному объекту привязана только одна из них. Другая ссылка получена уже другим способом и не связана с временным объектом непосредственно.

Кроме того, начиная C++17, применяется гарантированный copy/move elision. Этот код будет работать даже если мы явно запретим в классе SomeClass копирование и перемещение. Но проблема при этом все равно не уйдет. Просто нет у нас способа продлить время жизни временного объекта, созданного внутри функции после выхода из этой функции.
Re[8]: && member?
Здравствуйте, T4r4sB, Вы писали:

TB>Ну мув же.


Даже если мув и есть, то он формальный. Фактически образуется две разные ссылки (по одной в каждом объекте). Причем, непосредственно через временный объект инициализирована только одна из них. Другая ссылка получена уже через первую и способность продлевать время жизни временного объекта не наследует. То есть с объектом может быть связано сколько угодно всяких разных ссылок, но продлевать время жизни может только одна из них.

Кроме того, начиная C++17, применяется гарантированный copy/move elision. Этот код будет работать даже если мы явно запретим в классе SomeClass копирование и перемещение. Но проблема при этом все равно не уйдет. Просто нет у нас способа продлить время жизни временного объекта, созданного внутри функции после выхода из этой функции.