m42*_*42a 5 c++ undefined-behavior sequence-points c++11
如果i是一个int,则像这样的表达式++i + ++i是未定义的行为,因为有 2 个无序的修改i。然而, ifi是一些int类似的类,++i + ++i而是具有不确定顺序的修改,因此是定义的行为(在这种情况下具有确定性结果)。是否存在对原语的操作不排序而不是不确定排序会更好的情况?如果是这样,为什么这种情况不适用于用户创建的类型?如果不是,为什么原始操作根本没有顺序?
一般来说,“无序”的部分越多越好。
在 C++ 中不可能使两个函数交错运行。因此,不可能operator++交叉运行两个实现。
因此,对于实现 的类类型operator++,这是不确定顺序的。