template <class InputIterator, class T>
T accumulate(InputIterator first, InputIterator last, T init);
template <class InputIterator, class T, class BinaryOperation>
T accumulate(InputIterator first, InputIterator last, T init,
BinaryOperation binary_op);
Requires: T должны соответствовать требованиям CopyConstructible и CopyAssignable типам. В пределах [first, last], binary_op не должны ни изменять элементы , ни к аннулированию итератора или поддиапазоны.281
Использование полностью замкнутых диапазонов является преднамеренным.
accumulate аналогичен оператору сокращения APL и функции сокращения Common Lisp, но позволяет избежать трудности определения результата сокращения для пустой последовательности, всегда требуя начального значения.