Tag: rvo

Почему std :: move предотвращает RVO?

Во многих случаях при возврате локального из функции RVO срабатывает. Однако я думал, что явно использование std::move будет по крайней мере принудительным перемещением, когда RVO не произойдет, но RVO по-прежнему применяется, когда это возможно. Однако, похоже, это не так. #include “iostream” class HeavyWeight { public: HeavyWeight() { std::cout << "ctor" << std::endl; } HeavyWeight(const HeavyWeight& […]

c ++ 11 Оптимизация возвращаемого значения или перемещение?

Я не понимаю, когда я должен использовать std::move и когда я должен позволить оптимизировать компилятор … например: using SerialBuffer = vector; // let compiler optimize it SerialBuffer read( size_t size ) const { SerialBuffer buffer( size ); read( begin( buffer ), end( buffer ) ); // Return Value Optimization return buffer; } // explicit move […]

Давайте будем гением компьютера.