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