http://www.sgi.com/tech/stl/accumulate.html