考虑以下的C++代码。
现在想象一下,我有一个函数,它以以下方式使用bar()。
struct foo { std::string value; }
inline foo bar() { return { "42" }; }
现在想象一下,我有一个函数,它以以下方式使用bar()。
std::string my_func()
{
const auto &x = bar();
return x.value;
}
这段代码会泄漏内存吗?因为my_func只是持有x的引用?还是当my_func终止后,x仍然可以被清理掉?
我知道这不是引用应该使用的方式。但我刚刚意识到这个编译通过了,想知道它的语义是什么。