在最新的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