There are six algorithms that will output a range(which is denoted by an output iterator) in <numeric>: adjacent_difference, partial_sum, inclusive_scan, exclusive_scan, transform_inclusive_scan and transform_exclusive_scan. Can their input ranges overlap with output ranges? What about their parallel version?
I've tried to find some hints in the C++ standard with no luck.
See the remarks at https://eel.is/c++draft/numeric.ops.
Search for 'Remarks: result may be equal to first'
All of the algorithms that you asked about except
adjacent_differencehave that remark.So the output range can be the same as the input range. That's more restrictive than what you asked about (can they overlap).