template <class InputIterator, class OutputIterator>
OutputIterator partial_sum(
InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum(
InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op);
Requires: InputIteratorТип значения должен быть сконструирован из типа *first. Результат выражения acc + *i или binary_op(acc, *i) должен быть неявно преобразован в InputIteratorтип значения. acc должен быть writable к result итератору вывода. В диапазонах [first, last] и [result, result + (last - first)] binary_op не должен изменять элементы или делать недействительными итераторы или поддиапазоны.284
Effects: Для непустого диапазона функция создает аккумулятор acc , тип которого является InputIteratorтипом значения, инициализирует его *firstи присваивает результат *result. Для каждого итератора i по [first + 1, last) порядку acc затем модифицируется с помощью acc = acc + *i или, acc = binary_op(acc, *i) а результат присваивается *(result + (i - first)).
Использование полностью замкнутых диапазонов является преднамеренным.