The const-ness ссылки rvalue препятствует предполагаемой операции перемещения
Этот дефект возникает, когда функция принимает const ссылка rvalue как параметр. Например, этот конструктор перемещения принимает const ссылка rvalue:
class aClass {
public:
aClass (const aClass&& anotherClass);
}The const Характер опорного параметра rvalue препятствует ожидаемой операции перемещения.
Например, эта проблема может возникнуть, когда вы записываете конструктор перемещения путем копирования-вставки из конструктора копирования с const параметр, для образца:
aClass (const aClass& anotherClass);
& на && но забудьте опустить const в ссылке или операциях копирования в теле конструктора. В этом случае конструктор перемещения с const ссылка rvalue компилируется без ошибок, но приводит к неэффективному конструктору перемещения, который фактически копирует данные.Удалите const квалификатор из ссылочного параметра rvalue.
Для образца конструктор перемещения в предыдущем разделе может быть переписан как:
class aClass {
public:
aClass (aClass&& anotherClass);
}Эффективность улучшения могут варьироваться в зависимости от используемого компилятора, реализации библиотеки и окружения.
| Группа: Эффективность |
| Язык: C++ |
| По умолчанию: Off |
Синтаксис командной строки
: CONST_RVALUE_REFERENCE_PARAMETER |
| Влияние: Низкое |
Const parameter values may cause unnecessary data copies | Const return values may cause unnecessary data copies | Find defects (-checkers) | std::move called on an unmovable type