Functions
F.49
Не возвращайте `const T`
Причина
Не рекомендуется возвращать значение const. Такой устаревший совет теперь устарел: он не добавляет ценности и мешает семантике перемещения.
Пример
const vector<int> fct(); // плохо: этот "const" создаёт больше проблем, чем пользы
void g(vector<int>& vx)
{
// ...
fct() = vx; // запрещено "const"
// ...
vx = fct(); // дорогостоящее копирование: семантика перемещения подавлена "const"
// ...
}
Аргумент в пользу добавления const к возвращаемому значению — предотвращение (очень редких) случайных обращений к временному. Аргумент против — предотвращение (очень частого) использования семантики перемещения.
Смотрите также: F.20, общее правило о «выходных» значениях
Контроль
- Помечать возврат значения
const. Исправление: удалитьconst, чтобы возвращать не-constзначение.