Почему ForwardIterator2 вместо OutputIterator в std::transform?
Почему std::transform с первым параметром ExecutionPolicy принимает в качестве итератора для второй последовательности ForwardIterator2, а не OutputIterator, как вариант без ExecutionPolicy?
template<class InputIterator, class OutputIterator,
class UnaryOperation>
constexpr OutputIterator
transform(InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperation op); // тут OutputIterator
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
class UnaryOperation>
ForwardIterator2
transform(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 result, UnaryOperation op); // а тут ForwardIterator2
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Потому что непонятно, как распределять output iterator'ы между разными потоками. Представьте, что там std::ostream_iterator. ++ для него вообще ничего не делает.