const-ness ссылки на значение 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++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
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