c++ - 带有c++ 11 for循环的逗号运算符

首先,我想尝试是否允许这样做:

vector<int> a{1, 2};
vector<int> b{3, 4};

for(auto ai : a, auto bi : b)
{

}

这没有用,但是由于大小限制,我一直期待着它。

但是,令我惊讶的是,这也不起作用:
vector<int> b{3, 4};

for(int x = 1, auto bi : b)
{

}

逗号运算符不是要先解决左侧的所有副作用,再转到右侧吗?

最佳答案

在第二种情况下,您有一个声明。声明可以包含多个变量的声明,并用逗号分隔。

在第二种情况下,您编写的内容等同于以下声明

int x = 1, auto bi;

for (...) ...

而且第一个不起作用的原因不是由于任何大小限制,而是由于 range for loop的语法根本不允许您执行类似操作。