const
- мыс rvalue ссылки предотвращает предназначенную операцию пересылки
Этот дефект происходит, когда функция берет const
ссылка rvalue как параметр. Например, этот конструктор перемещения берет const
ссылка rvalue:
class aClass { public: aClass (const aClass&& anotherClass); }
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