std::move called on an unmovable typestd::move используемый на типе класса без конструктора перемещения или оператора присваивания перемещения
Этот дефект происходит, когда вы используете std::move перемещать объект типа класса, который не имеет конструктора перемещения или перемещает оператор присваивания.
Использование std::move в операторах, таких как:
Obj objTo {std::move(objFrom)};
objTo = std::move(objFrom);Если класс является дорогим, чтобы скопировать, непреднамеренная операция копии может вызвать потерю эффективности.
Сделать объект типа T подвижный, добавьте конструктора перемещения:
T (T&&);
T& operator=(T&&);
T. Если класс не должен непосредственно управлять ресурсом, можно использовать сгенерированные компилятором операторы перемещения с помощью =default синтаксис, например:T (T&&) = default;
В противном случае, если операция пересылки не требуется, удалите std::move вызовите и непосредственно скопируйте объект.
| Группа: Производительность |
| Язык: C++ |
| Значение по умолчанию: Off |
Синтаксис командной строки:
STD_MOVE_UNMOVABLE_TYPE |
| Удар: носитель |
Const std::move input may cause a more expensive object copy | Find defects (-checkers)