有人可以验证以下是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;
}
我是否正确 myIntRef 立即是一个悬空引用,因为 f 的返回值没有保存在堆栈上的任何地方?
另外,以下是有效的修复,还是仍然是错误?
const int myIntCopy = f()[0]; // copy, not a reference
也就是说,f()的返回结果是不是在第0个元素被复制之前就被扔掉了?