我对初始化器列表和序列点很感兴趣。不久前我读到初始化器列表中的求值顺序是从左到右。如果是这样,那么在评估点之间一定有某种序列点,我错了吗?那么,下面的代码是有效的吗?其中是否存在导致未定义行为的原因?
int i = 0;
struct S {
S(...) {}
operator int() { return i; }
};
int main() {
i = S{++i, ++i};
}
任何和所有的回应都是值得感谢的。
https://stackoverflow.com/questions/14442894
复制相似问题