Can I Use Std::transform In Place With A Parallel Execution Policy?
Answer : I believe that it's talking about a different detail. The unary_op takes an element of the sequence and returns a value. That value is stored (by transform ) into the destination sequence. So this unary_op would be fine: int times2(int v) { return 2*v; } but this one would not: int times2(int &v) { return v*=2; } But that's not really what you're asking about. You want to know if you can use the unary_op version of transform as a parallel algorithm with the same source and destination range. I don't see why not. transform maps a single element of the source sequence to a single element of the destination sequence. However, if your unary_op isn't really unary, (i.e, it references other elements in the sequence - even if it only reads them, then you will have a data race). To quote the standard here [alg.transform.1] op [...] shall not invalidate iterators or subranges, or modify elements in the ranges this forbids y...