Значения параметров Const могут предотвратить операцию перемещения, приводящую к более интенсивной операции копирования
Этот дефект возникает при const
объекты как параметры функции могут препятствовать перемещению операции, приводящей к более интенсивной операции копирования.
Средство проверки не проверяет, возможна ли операция перемещения при заданном вызове функции. Шашка просто подсвечивает const
параметры функции, которые имеют типы классов с нетривиальной операцией копирования и операцией перемещения. Вы можете сами определить, можно ли переместить параметр в вызываемую функцию.
Если аргумент функции является rvalue, ресурсы, сопоставленные с аргументом, больше не требуются и могут быть перемещены к параметрам в вызываемой функции. Компиляторы гарантируют, что операция перемещения используется в этой ситуации, поскольку они обычно дешевле, чем операции копирования. Если вы используете const
объект как параметр функции, вы явным образом препятствуете этой оптимизации компилятора.
Если вы считаете, что параметр может быть перемещен в вызываемую функцию, удалите const
квалификатор из маркированного функционального параметра.
Эффективность улучшения могут варьироваться в зависимости от используемого компилятора, реализации библиотеки и окружения.
Группа: Эффективность |
Язык: C++ |
По умолчанию: Off |
Синтаксис командной строки
: CONST_PARAMETER_VALUE |
Влияние: Низкое |
Const return values may cause unnecessary data copies
| Const rvalue reference parameter may cause unnecessary data copies
| Find defects (-checkers)