在最新的C++標準它意味着:C++ 11:基於範圍的語句:「range-init」生存期?
for (foo : bar)
baz;
是equivilant到:
{
auto && r = bar;
for (auto it = r.begin(), end = r.end(); it != end; ++it)
{
foo = *it;
baz;
}
}
當在上面的酒吧是一個函數調用返回一個集合,例如:
vector<string> boo();
ie
for (auto bo : boo())
...
不行成爲:
auto&& r = boo();
...
所以噓的臨時返回值()在聲明中「自動& & R = BOO()」的結尾被破壞,則R是在循環的入口處懸掛參考。 ??這個推理是否正確?如果不是,爲什麼不呢?
首先,'矢量 BOO();'不聲明一個對象。它聲明瞭一個函數。其次,我不明白你的問題。 –
Nawaz
2012-03-11 18:37:01
是「矢量 BOO()」是返回集合的示例功能的簽名。該函數然後在下面的行中調用。 –
2012-03-11 18:38:08