C から来て、Accelerated C++ の第 5 章にあるこの例が私の注意を引きました。
vector<Student_info> extract_fails(vector<Student_info>& students) {
vector<Student_info> pass, fail;
for (vector<Student_info>::size_type i = 0; i != students.size(); ++i)
if (fgrade(students[i]))
fail.push_back(students[i]);
else
pass.push_back(students[i]);
students = pass;
return fail;
}
が返されるのでfail
、ローカル変数であっても問題ないことがわかります。しかし、なぜpass
ローカル スコープから抜け出すことができるのでしょうか。