Struct template fold
boost::proto::fold — A PrimitiveTransform that invokes the
          fusion::fold<> algorithm to accumulate a value.
 
Synopsis
template<typename Sequence, typename State0, typename Fun> 
struct fold :  proto::transform< fold<Sequence, State0, Fun> > {
  
  template<typename Expr, typename State, typename Data> 
  struct impl :  proto::transform_impl< Expr, State, Data > {
    
    typedef when<_, Sequence>                                        X;            
    typedef when<_, State0>                                          Y;            
    typedef typename boost::result_of<X(Expr, State, Data)>::type    seq;          
    typedef typename boost::result_of<Y(Expr, State, Data)>::type    state0;       
    typedef unspecified                                              fun;          
    typedef typename fusion::result_of::fold<seq, state0, fun>::type result_type;
    
    result_type operator()(typename impl::expr_param, 
                           typename impl::state_param, 
                           typename impl::data_param) const;
  };
};
Description
Для полного описания поведения преобразования<proto::fold<>>см. документацию для вложенного шаблона<
             proto::fold::impl<>
           >класса.