Can I return a const reference argument from a function in C++? I.e., does this code lead to undefined behavior?
template<typename T>
class Option {
public:
...
const T & getOrElse(const T &x) const
{
return val == nullptr ? x : *val;
}
private:
T *val = nullptr;
}
Option<Foo> foo;
foo.getOrElse(Foo()); // <- using a temporary `Foo`