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