text: 
  // Copyright Aleksey Gurtovoy 2000-2004
  //
  // Distributed under the Boost Software License, Version 1.0. 
  // (See accompanying file LICENSE_1_0.txt or copy at 
  // http://www.boost.org/LICENSE_1_0.txt)
  //
  
  // *Preprocessed* version of the main "fold_impl.hpp" header
  // -- DO NOT modify by hand!
  
  namespace boost { namespace mpl { namespace aux {
  
  /// forward declaration
  
  template<
        int N
      , typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl;
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< 0,First,Last,State,ForwardOp >
  {
      typedef First iter0;
      typedef State state0;
      typedef state0 state;
      typedef iter0 iterator;
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< 1,First,Last,State,ForwardOp >
  {
      typedef First iter0;
      typedef State state0;
      typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
      typedef typename mpl::next<iter0>::type iter1;
      
  
      typedef state1 state;
      typedef iter1 iterator;
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< 2,First,Last,State,ForwardOp >
  {
      typedef First iter0;
      typedef State state0;
      typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
      typedef typename mpl::next<iter0>::type iter1;
      typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
      typedef typename mpl::next<iter1>::type iter2;
      
  
      typedef state2 state;
      typedef iter2 iterator;
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< 3,First,Last,State,ForwardOp >
  {
      typedef First iter0;
      typedef State state0;
      typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
      typedef typename mpl::next<iter0>::type iter1;
      typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
      typedef typename mpl::next<iter1>::type iter2;
      typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
      typedef typename mpl::next<iter2>::type iter3;
      
  
      typedef state3 state;
      typedef iter3 iterator;
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< 4,First,Last,State,ForwardOp >
  {
      typedef First iter0;
      typedef State state0;
      typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
      typedef typename mpl::next<iter0>::type iter1;
      typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
      typedef typename mpl::next<iter1>::type iter2;
      typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
      typedef typename mpl::next<iter2>::type iter3;
      typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
      typedef typename mpl::next<iter3>::type iter4;
      
  
      typedef state4 state;
      typedef iter4 iterator;
  };
  
  template<
        int N
      , typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl
  {
      typedef fold_impl<
            4
          , First
          , Last
          , State
          , ForwardOp
          > chunk_;
  
      typedef fold_impl<
            ( (N - 4) < 0 ? 0 : N - 4 )
          , typename chunk_::iterator
          , Last
          , typename chunk_::state
          , ForwardOp
          > res_;
  
      typedef typename res_::state state;
      typedef typename res_::iterator iterator;
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< -1,First,Last,State,ForwardOp >
      : fold_impl<
            -1
          , typename mpl::next<First>::type
          , Last
          , typename apply2<ForwardOp,State, typename deref<First>::type>::type
          , ForwardOp
          >
  {
  };
  
  template<
        typename Last
      , typename State
      , typename ForwardOp
      >
  struct fold_impl< -1,Last,Last,State,ForwardOp >
  {
      typedef State state;
      typedef Last iterator;
  };
  
  }}}
  