Есть функция типа такой:
const ValueObject& MyClass::getSavedObject(const KeyObject& id, const ValueObject& defaultValue) const
{
std::map<KeyObject, ValueObject>::const_iterator it = storedObjects.find(id);
if (it != storedObjects.end())
{
return it->second;
}
return defaultValue;
}
Компилятор выдаёт warning в финальном return: "Returning reference to local temporary object".
Я понимаю, что имеется в виду, но я же нигде не ухудшаю область видимости — какой объект передали, тот и возвращаем.
Редуцируя до функции типа
const ValueObject& foo(const ValueObject& param)
{
return param;
}
Как писать подобные конструкции, не вызывая warning?