有人可以验证以下是BUG,并解释原因吗?我想我知道,但我不清楚细节.(我的实际问题涉及枚举的向量,而不是整数,但我认为它不重要.)假设我有以下代码:
std::vector<int> f (void) {
std::vector<int> v;
v.push_back(5);
return v;
}
void g (void) {
const int &myIntRef = f()[0];
std::cout << myIntRef << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我是否正确myIntRef立即是一个悬空引用,因为f的返回值在堆栈中无处保存?
此外,以下是有效的修复,还是它仍然是一个错误?
const int myIntCopy = f()[0]; // copy, not a reference
Run Code Online (Sandbox Code Playgroud)
换句话说,是否可以复制第0个元素之前抛弃f()的返回结果?