...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
template< typename Sequence , typename State , typename ForwardOp > struct iter_fold { 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 each iterator in the range [begin<Sequence>::type,end<Sequence>::type)
in the linear order.
#include "boost/mpl/iter_fold.hpp"
Parameter | Requirement | Description |
---|---|---|
Sequence | A model of Sequence | A sequence to iterate. |
State | A type | The initial state for the first ForwardOp application. |
ForwardOp | A model of [Lambda Function] | The operation to be executed on forward traversal. |
Expression | Expression type | Precondition | Semantics | Postcondition |
---|---|---|---|---|
typedef iter_fold<Sequence,T,Op>::type t; | A type | Equivalent to typedef lambda<Op>::type op; typedef begin<Sequence>::type i1; typedef apply<op,T,i1>::type t1; typedef i1::next i2; typedef apply<op,t1,i2>::type t2; ...; typedef apply<op,T,in>::type tn; typedef in::next last; typedef tn t , where n == size<Sequence>::type::value and last is identical to end<Sequence>::type ; Equivalent to typedef T t; if the sequence is empty. |
Linear. Exactly size<Sequence>::type::value
applications of ForwardOp
.
typedef list_c<int,5,-1,0,7,2,0,-5,4> numbers; typedef iter_fold< numbers , begin<numbers>::type , if_< less< deref<_1>, deref<_2> >,_2,_1 > >::type max_element_iter;BOOST_STATIC_ASSERT(max_element_iter::type::value == 7);
Algorithms, iter_fold_backward
, fold
, fold_backward
, copy
, copy_backward