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 |
| Влияние: Средний |