Re[3]: Про перемещение (на примере кода)
От: T4r4sB Россия  
Дата: 15.03.25 18:34
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, T4r4sB, Вы писали:


TB>>Вот тут тоже убери двойной амперсанд. В переменной значение же? Значит так и пиши в объявлении


S>Ну смотрите, получается что обычный возврат return из функции — может порождать копию. Так ведь?


S>Правильно ли я понял, что это благодаря умному компилятору и NRVO ? И всегда ли можно на это рассчитывать, всегда ли имеем 100% гарантию что копия не порождается?


Есть правила когда оптимизация точно сработает.
Есть случаи когда она точно НЕ сработает, и как минимум надо понимать как эта оптимизация устроена технически. Например при возврате поля компилятор не знает нужно ли тебе это поле в дальнейшем, так что если нет то руками ставь std move
И есть случаи когда зависит от компилятора но их сравнительно мало.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.