#include <vector>
using namespace std;
int main
{
vector<int> coll;
for (auto& i : coll) {} // 1
for (auto&& i : coll) {} // 2
}
根据cppref:
安全,事实上,在通用代码中,最好使用演绎 转发参考,用于(auto&amp;&amp; var:sequence)。
但是,我认为2
完全等同于1
;因为i
仍然是左值,即使它被声明为auto&&
。
为什么建议在range-for循环中使用auto&&
而不是auto&
?