誰かが以下がバグであることを確認し、その理由を説明できますか? 知っていると思いますが、詳細は不明です。(私の実際の問題は、int ではなく、enum のベクトルに関係していましたが、問題にはならないと思います。) 次のコードがあるとします。
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;
}
f の戻り値がスタックのどこにも保存されないため、myIntRef はすぐにダングリング リファレンスになるということは正しいでしょうか?
また、以下は有効な修正ですか、それともまだバグですか?
const int myIntCopy = f()[0]; // copy, not a reference
つまり、0番目の要素がコピーできるようになる前に、f()の戻り結果が捨てられているのでしょうか?