Возвращаемые значения const могут предотвратить операцию пересылки, приводящую к более интенсивной эффективностью операции копии
Этот дефект происходит когда const
объекты как возвращаемые значения могут предотвратить операцию пересылки, приводящую к более интенсивной эффективностью операции копии.
Средство проверки не проверяет, возможна ли операция пересылки для какой-либо вызывающей функции. Средство проверки просто подсвечивает const
функциональные возвращаемые значения, которые имеют типы классов с нетривиальной операцией копии и операцией пересылки.
Ресурсы, сопоставленные с функциональным возвращаемым значением, больше не требуются и могут быть перемещены в объекты в функции вызова. Компиляторы гарантируют, что операция пересылки используется в этой ситуации, поскольку они являются обычно менее дорогими, чем операции копии. Если вы используете const
возразите как возвращаемое значение, вы явным образом предотвращаете эту компиляторную оптимизацию.
Кроме того, функция вызова может сохранить возвращаемое значение в non-const
объект. const
- мыс возвращаемого значения не предотвращает операции на non-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)