iter_fold_impl.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 181 行
HPP
181 行
// 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 "iter_fold_impl.hpp" header// -- DO NOT modify by hand!namespace boost { namespace mpl { namespace aux {/// forward declarationtemplate< int N , typename First , typename Last , typename State , typename ForwardOp >struct iter_fold_impl;template< typename First , typename Last , typename State , typename ForwardOp >struct iter_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 iter_fold_impl< 1,First,Last,State,ForwardOp >{ typedef First iter0; typedef State state0; typedef typename apply2< ForwardOp,state0,iter0 >::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 iter_fold_impl< 2,First,Last,State,ForwardOp >{ typedef First iter0; typedef State state0; typedef typename apply2< ForwardOp,state0,iter0 >::type state1; typedef typename mpl::next<iter0>::type iter1; typedef typename apply2< ForwardOp,state1,iter1 >::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 iter_fold_impl< 3,First,Last,State,ForwardOp >{ typedef First iter0; typedef State state0; typedef typename apply2< ForwardOp,state0,iter0 >::type state1; typedef typename mpl::next<iter0>::type iter1; typedef typename apply2< ForwardOp,state1,iter1 >::type state2; typedef typename mpl::next<iter1>::type iter2; typedef typename apply2< ForwardOp,state2,iter2 >::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 iter_fold_impl< 4,First,Last,State,ForwardOp >{ typedef First iter0; typedef State state0; typedef typename apply2< ForwardOp,state0,iter0 >::type state1; typedef typename mpl::next<iter0>::type iter1; typedef typename apply2< ForwardOp,state1,iter1 >::type state2; typedef typename mpl::next<iter1>::type iter2; typedef typename apply2< ForwardOp,state2,iter2 >::type state3; typedef typename mpl::next<iter2>::type iter3; typedef typename apply2< ForwardOp,state3,iter3 >::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 iter_fold_impl{ typedef iter_fold_impl< 4 , First , Last , State , ForwardOp > chunk_; typedef iter_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 iter_fold_impl< -1,First,Last,State,ForwardOp > : iter_fold_impl< -1 , typename mpl::next<First>::type , Last , typename apply2< ForwardOp,State,First >::type , ForwardOp >{};template< typename Last , typename State , typename ForwardOp >struct iter_fold_impl< -1,Last,Last,State,ForwardOp >{ typedef State state; typedef Last iterator;};}}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?