#include <initializer_list>
struct Obj {
int i;
};
Obj a, b;
int main() {
for(Obj& obj : {a, b}) {
obj.i = 123;
}
}
这份代码无法编译,原因是来自 initializer_list
的值 {a, b}
被视为 const Obj&
,且无法与非常量引用 obj
绑定。
是否有一种简单的方式使类似的构造工作正常,即迭代不同变量中的值,比如这里的 a
和 b
。
std::reference_wrapper
,因为这只会使代码更加复杂;毕竟C++本身也远非完美。 - tmlenstd::initalizer_list
解决了问题,而且这也被证明是解决这个问题最干净的方法,所以你的问题意图可能会偏向于initializer_list
,这样搜索这种解决方案的人就可以更容易地找到答案。 - ruohola