std::move
input may cause a more expensive object
copyConst- std::move
вход не может быть перемещен и приводит к более дорогостоящей операции копирования
Этот дефект возникает, когда вы используете std::move
на const
объект, что приводит к более дорогостоящей операции копирования.
Проверка вызывает нарушение только для типов классов с нетривиальной операцией копирования и операцией перемещения.
A const
объект не может быть изменен и поэтому не может быть перемещен. Система координат std::move
на const
объект бесшумно возвращается к операции копирования без ошибок компиляции. Ваш код может пострадать от более низкой эффективности, не заметив проблемы.
Удалите const
квалификатор из перемещаемого объекта.
Если вы хотите вместо этого выполнить операцию копирования, удалите избыточный std::move
вызов.
Обратите внимание, что эта проблема также запускает проверку Move operation on const object
, который применяется ко всем операциям перемещения на const
объекты независимо от того, имеет ли тип класса операцию перемещения и нетривиальную операцию копирования. Если вы решите обосновать проблему, можно использовать одно и то же обоснование для обоих результатов.
Эффективность улучшения могут варьироваться в зависимости от используемого компилятора, реализации библиотеки и окружения.
Группа: Эффективность |
Язык: C++ |
По умолчанию: Off |
Синтаксис командной строки
: EXPENSIVE_STD_MOVE_CONST_OBJECT |
Влияние: Средний |