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