C++17/20 并行算法:对对象的不同步访问

Aco*_*orn 5 c++ algorithm parallel-processing language-lawyer c++20

阅读[algorithms.parallel.exec]p2上最新的 C++20 草案,我发现了 C++17 中没有的一段:

\n\n
\n

如果某个对象被元素访问函数修改,则该算法将不会对该对象执行其他非同步访问。修改元素访问函数是那些被指定为修改对象的函数。[注意:例如,swap++--@=和 赋值修改对象。对于赋值和@=运算符,仅修改左侧参数。\xe2\x80\x94尾注]

\n
\n\n

这究竟保证了什么?为什么添加它?

\n\n

例如,这是否保证“并行”算法在算法的整个执行过程中不会将迭代器递增两次?(或者,如果是的话,它将以同步/顺序的方式)?

\n