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