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