...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Algorithms / Iteration Algorithms / accumulate |
template< typename Sequence , typename State , typename ForwardOp > struct accumulate { typedef unspecified type; };
Returns the result of the successive application of binary ForwardOp to the result of the previous ForwardOp invocation (State if it's the first call) and every element of the sequence in the range [begin<Sequence>::type, end<Sequence>::type) in order. [Note: accumulate is a synonym for fold — end note]
#include <boost/mpl/accumulate.hpp>
Parameter | Requirement | Description |
---|---|---|
Sequence | Forward Sequence | A sequence to iterate. |
State | Any type | The initial state for the first ForwardOp application. |
ForwardOp | Binary Lambda Expression | The operation to be executed on forward traversal. |
For any Forward Sequence s, binary Lambda Expression op, and arbitrary type state:
typedef accumulate<s,state,op>::type t;
Return type: | A type. |
---|---|
Semantics: | Equivalent to typedef fold<s,state,op>::type t; |
Linear. Exactly size<s>::value applications of op.
typedef vector<long,float,short,double,float,long,long double> types; typedef accumulate< types , int_<0> , if_< is_float<_2>,next<_1>,_1 > >::type number_of_floats; BOOST_MPL_ASSERT_RELATION( number_of_floats::value, ==, 4 );