|  | Home | Libraries | People | FAQ | More | 
            For a sequence seq, initial
            state initial_state,
            and binary function object or function pointer f,
            iter_fold returns the result of the repeated application
            of binary f to the result
            of the previous f invocation
            (inital_state if it is
            the first call) and iterators on each element of seq.
          
template< typename Sequence, typename State, typename F > typenameresult_of::iter_fold<Sequence, State const, F>::type iter_fold( Sequence& seq, State const& initial_state, F f); template< typename Sequence, typename State, typename F > typenameresult_of::iter_fold<Sequence const, State const, F>::type iter_fold( Sequence const& seq, State const& initial_state, F f); template< typename Sequence, typename State, typename F > typenameresult_of::iter_fold<Sequence, State, F>::type iter_fold( Sequence& seq, State& initial_state, F f); template< typename Sequence, typename State, typename F > typenameresult_of::iter_fold<Sequence const, State, F>::type iter_fold( Sequence const& seq, State& initial_state, F f);
Table 1.42. Parameters
| Parameter | Requirement | Description | 
|---|---|---|
| 
                       | A model of Forward Sequence | Operation's argument | 
| 
                       | Any type | Initial state | 
| 
                       | 
                       | Operation's argument | 
iter_fold(seq, initial_state, f);
Return type: Any type
            Semantics: Equivalent to f(...
            f(f(initial_state,it1),it2) ...itN) where it1 ...itN
            are consecutive iterators on the elements of seq.
          
            Linear, exactly result_of::size<Sequence>::valuef.
          
#include <boost/fusion/algorithm/iteration/iter_fold.hpp> #include <boost/fusion/include/iter_fold.hpp>
struct make_string { typedef std::string result_type; template<typename T> std::string operator()(const std::string& str, const T& t) const { return str + boost::lexical_cast<std::string>(deref(t)); } }; ... constvector<int,int> vec(1,2); assert(iter_fold(vec,std::string(""), make_string()) == "12");