Современные компиляторы и NRVO
От: _NN_ www.nemerleweb.com
Дата: 01.03.24 16:22
Оценка:
Насколько вы полагаетесь на оптимизацию компилятора ?

Скажем даже MSVC подтянулся с оптимизацией: MSVC Improving Copy and Move Elision.
Однако, стандарт не гарантирует нам отсутствие копирования в отличии от гарантий временного объекта.

В идеале хотелось бы проверку на этапе компиляции в отсутствии копирования.
С другой стороны, можно всегда приводить к rvalue и получить гарантировано отсутствие копирования, правда с гарантированным перемещением, которого не будет в случае NRVO.

struct MyType { ... };

MyType might_copy() {
 MyType m;
 // много-много кода
 return m;
}

MyType always_move() {
 MyType m;
 // много-много кода
 return std::move(m);
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.