From 5175a17d87dd9c3e8d3d427364c004c45cc8d7ff Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Fri, 1 Oct 2004 16:32:41 +0000 Subject: [PATCH] various iterator fixes [SVN r25513] --- include/boost/mpl/aux_/joint_iter.hpp | 84 ++++++++----------- .../preprocessed/bcc/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/bcc551/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/dmc/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/gcc/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/msvc60/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/msvc70/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/mwcw/reverse_fold_impl.hpp | 60 ++++++------- .../no_ctps/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/no_ttp/reverse_fold_impl.hpp | 60 ++++++------- .../preprocessed/plain/reverse_fold_impl.hpp | 60 ++++++------- include/boost/mpl/aux_/reverse_fold_impl.hpp | 3 +- include/boost/mpl/aux_/test/assert.hpp | 5 ++ include/boost/mpl/joint_view.hpp | 4 +- include/boost/mpl/list/aux_/iterator.hpp | 35 +++++++- include/boost/mpl/pair_view.hpp | 10 ++- test/find.cpp | 4 +- test/joint_view.cpp | 23 +++++ 18 files changed, 410 insertions(+), 358 deletions(-) diff --git a/include/boost/mpl/aux_/joint_iter.hpp b/include/boost/mpl/aux_/joint_iter.hpp index 65caef6..98ecf72 100644 --- a/include/boost/mpl/aux_/joint_iter.hpp +++ b/include/boost/mpl/aux_/joint_iter.hpp @@ -19,12 +19,13 @@ #include #include #include -#include + +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) +# include +#endif namespace boost { namespace mpl { -namespace aux { - #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< @@ -36,13 +37,6 @@ struct joint_iter { typedef Iterator1 base; typedef forward_iterator_tag category; - typedef joint_iter< - typename mpl::next::type - , LastIterator1 - , Iterator2 - > next; - - typedef typename deref::type type; }; template< @@ -53,19 +47,30 @@ struct joint_iter { typedef Iterator2 base; typedef forward_iterator_tag category; - typedef joint_iter< - LastIterator1 - , LastIterator1 - , typename mpl::next::type - > next; - - typedef typename deref::type type; }; -#else +template< typename I1, typename L1, typename I2 > +struct deref< joint_iter > +{ + typedef typename joint_iter::base base_; + typedef typename deref::type type; +}; + +template< typename I1, typename L1, typename I2 > +struct next< joint_iter > +{ + typedef joint_iter< typename mpl::next::type,L1,I2 > type; +}; + +template< typename L1, typename I2 > +struct next< joint_iter > +{ + typedef joint_iter< L1,L1,typename mpl::next::type > type; +}; + +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -// forward decl. for 'joint_iter_impl' template< typename Iterator1 , typename LastIterator1 @@ -75,47 +80,26 @@ struct joint_iter; template< bool > struct joint_iter_impl { - template< - typename Iterator1 - , typename LastIterator1 - , typename Iterator2 - > - struct result_ + template< typename I1, typename L1, typename I2 > struct result_ { - typedef Iterator1 base; + typedef I1 base; typedef forward_iterator_tag category; - typedef joint_iter< - typename mpl::next::type - , LastIterator1 - , Iterator2 - > next; - - typedef typename deref::type type; + typedef joint_iter< typename mpl::next::type,L1,I2 > next; + typedef typename deref::type type; }; }; template<> struct joint_iter_impl { - template< - typename Iterator1 - , typename LastIterator1 - , typename Iterator2 - > - struct result_ + template< typename I1, typename L1, typename I2 > struct result_ { - typedef Iterator2 base; + typedef I2 base; typedef forward_iterator_tag category; - typedef joint_iter< - LastIterator1 - , LastIterator1 - , typename mpl::next::type - > next; - - typedef typename deref::type type; + typedef joint_iter< L1,L1,typename mpl::next::type > next; + typedef typename deref::type type; }; }; - template< typename Iterator1 , typename LastIterator1 @@ -129,9 +113,7 @@ struct joint_iter #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -} // namespace aux - -BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, aux::joint_iter) +BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter) }} diff --git a/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp index 391d4ca..8bb09d0 100644 --- a/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp @@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -179,13 +179,13 @@ struct reverse_fold_chunk { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -199,10 +199,10 @@ struct reverse_fold_chunk > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -264,7 +264,7 @@ struct reverse_fold_step typedef reverse_fold_chunk< -1 >::template result_< typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -272,7 +272,7 @@ struct reverse_fold_step typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp index 391d4ca..8bb09d0 100644 --- a/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp @@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -179,13 +179,13 @@ struct reverse_fold_chunk { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -199,10 +199,10 @@ struct reverse_fold_chunk > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -264,7 +264,7 @@ struct reverse_fold_step typedef reverse_fold_chunk< -1 >::template result_< typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -272,7 +272,7 @@ struct reverse_fold_step typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp index 9ee7e8f..ecf781b 100644 --- a/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp @@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -159,13 +159,13 @@ struct reverse_fold_impl { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -179,10 +179,10 @@ struct reverse_fold_impl > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > -1 , typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp index 9ee7e8f..ecf781b 100644 --- a/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp @@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -159,13 +159,13 @@ struct reverse_fold_impl { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -179,10 +179,10 @@ struct reverse_fold_impl > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > -1 , typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp index 2fc7cdc..42ecdf1 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp @@ -66,12 +66,12 @@ template<> struct reverse_fold_chunk<1> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -98,15 +98,15 @@ template<> struct reverse_fold_chunk<2> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -135,18 +135,18 @@ template<> struct reverse_fold_chunk<3> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -175,21 +175,21 @@ template<> struct reverse_fold_chunk<4> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -219,13 +219,13 @@ struct reverse_fold_chunk { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -239,10 +239,10 @@ struct reverse_fold_chunk > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -312,7 +312,7 @@ struct reverse_fold_step typedef reverse_fold_chunk< -1 >::template result_< typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -320,7 +320,7 @@ struct reverse_fold_step typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp index 391d4ca..8bb09d0 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp @@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -179,13 +179,13 @@ struct reverse_fold_chunk { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -199,10 +199,10 @@ struct reverse_fold_chunk > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -264,7 +264,7 @@ struct reverse_fold_step typedef reverse_fold_chunk< -1 >::template result_< typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -272,7 +272,7 @@ struct reverse_fold_step typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp index 9ee7e8f..ecf781b 100644 --- a/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp @@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -159,13 +159,13 @@ struct reverse_fold_impl { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -179,10 +179,10 @@ struct reverse_fold_impl > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > -1 , typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp index 391d4ca..8bb09d0 100644 --- a/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp @@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4> { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -179,13 +179,13 @@ struct reverse_fold_chunk { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -199,10 +199,10 @@ struct reverse_fold_chunk > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -264,7 +264,7 @@ struct reverse_fold_step typedef reverse_fold_chunk< -1 >::template result_< typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -272,7 +272,7 @@ struct reverse_fold_step typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp index 9ee7e8f..ecf781b 100644 --- a/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp @@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -159,13 +159,13 @@ struct reverse_fold_impl { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -179,10 +179,10 @@ struct reverse_fold_impl > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > -1 , typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp b/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp index 9ee7e8f..ecf781b 100644 --- a/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp @@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; typedef fwd_state1 bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; typedef iter1 iterator; }; @@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; typedef fwd_state2 bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; typedef fwd_state3 bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; typedef fwd_state4 bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -159,13 +159,13 @@ struct reverse_fold_impl { typedef First iter0; typedef State fwd_state0; - typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1; + typedef typename apply2< ForwardOp, fwd_state0, typename deref::type >::type fwd_state1; typedef typename next::type iter1; - typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2; + typedef typename apply2< ForwardOp, fwd_state1, typename deref::type >::type fwd_state2; typedef typename next::type iter2; - typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3; + typedef typename apply2< ForwardOp, fwd_state2, typename deref::type >::type fwd_state3; typedef typename next::type iter3; - typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4; + typedef typename apply2< ForwardOp, fwd_state3, typename deref::type >::type fwd_state4; typedef typename next::type iter4; @@ -179,10 +179,10 @@ struct reverse_fold_impl > nested_chunk; typedef typename nested_chunk::state bkwd_state4; - typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3; - typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2; - typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1; - typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0; + typedef typename apply2< BackwardOp, bkwd_state4, typename deref::type >::type bkwd_state3; + typedef typename apply2< BackwardOp, bkwd_state3, typename deref::type >::type bkwd_state2; + typedef typename apply2< BackwardOp, bkwd_state2, typename deref::type >::type bkwd_state1; + typedef typename apply2< BackwardOp, bkwd_state1, typename deref::type >::type bkwd_state0; typedef bkwd_state0 state; @@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > -1 , typename next::type , Last - , typename apply2::type + , typename apply2::type>::type , BackwardOp , ForwardOp > nested_step; @@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > typedef typename apply2< BackwardOp , typename nested_step::state - , typename First::type + , typename deref::type >::type state; typedef typename nested_step::iterator iterator; diff --git a/include/boost/mpl/aux_/reverse_fold_impl.hpp b/include/boost/mpl/aux_/reverse_fold_impl.hpp index 8be9df9..633368d 100644 --- a/include/boost/mpl/aux_/reverse_fold_impl.hpp +++ b/include/boost/mpl/aux_/reverse_fold_impl.hpp @@ -16,6 +16,7 @@ #if !defined(BOOST_MPL_PREPROCESSING_MODE) # include +# include # include # include # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ @@ -35,7 +36,7 @@ #else -# define AUX778076_FOLD_IMPL_OP(iter) typename iter::type +# define AUX778076_FOLD_IMPL_OP(iter) typename deref::type # define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold # include diff --git a/include/boost/mpl/aux_/test/assert.hpp b/include/boost/mpl/aux_/test/assert.hpp index 6323586..57c6f3c 100644 --- a/include/boost/mpl/aux_/test/assert.hpp +++ b/include/boost/mpl/aux_/test/assert.hpp @@ -15,10 +15,15 @@ // $Revision$ #include +#include #define MPL_ASSERT(pred) BOOST_MPL_ASSERT(pred) #define MPL_ASSERT_NOT(pred) BOOST_MPL_ASSERT_NOT(pred) #define MPL_ASSERT_MSG(c, msg, types) BOOST_MPL_ASSERT_MSG(c, msg, types) #define MPL_ASSERT_RELATION(x, rel, y) BOOST_MPL_ASSERT_RELATION(x, rel, y) +#define MPL_ASSERT_INSTANTIATION(x) \ + enum { BOOST_PP_CAT(instantiation_test, __LINE__) = sizeof( x ) } \ +/**/ + #endif // BOOST_MPL_AUX_TEST_ASSERT_HPP_INCLUDED diff --git a/include/boost/mpl/joint_view.hpp b/include/boost/mpl/joint_view.hpp index b5d7f67..3de8b36 100644 --- a/include/boost/mpl/joint_view.hpp +++ b/include/boost/mpl/joint_view.hpp @@ -54,8 +54,8 @@ struct joint_view typedef joint_view type; typedef aux::joint_view_tag tag; - typedef typename aux::joint_iter begin; - typedef typename aux::joint_iter end; + typedef joint_iter begin; + typedef joint_iter end; }; BOOST_MPL_AUX_NA_SPEC(2, joint_view) diff --git a/include/boost/mpl/list/aux_/iterator.hpp b/include/boost/mpl/list/aux_/iterator.hpp index 17810dc..840547f 100644 --- a/include/boost/mpl/list/aux_/iterator.hpp +++ b/include/boost/mpl/list/aux_/iterator.hpp @@ -16,11 +16,37 @@ #include #include +#include #include +#include #include +#include namespace boost { namespace mpl { +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + +template< typename Node > +struct l_iter +{ + typedef aux::l_iter_tag tag; + typedef forward_iterator_tag category; +}; + +template< typename Node > +struct deref< l_iter > +{ + typedef typename Node::item type; +}; + +template< typename Node > +struct next< l_iter > +{ + typedef l_iter< typename Node::next > type; +}; + +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template< typename Node > struct l_iter { @@ -30,13 +56,20 @@ struct l_iter typedef l_iter< typename mpl::next::type > next; }; +#endif + + template<> struct l_iter { typedef aux::l_iter_tag tag; typedef forward_iterator_tag category; +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + typedef na type; + typedef l_iter next; +#endif }; -BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1,l_iter) +BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, l_iter) }} diff --git a/include/boost/mpl/pair_view.hpp b/include/boost/mpl/pair_view.hpp index 575721f..db3d2a7 100644 --- a/include/boost/mpl/pair_view.hpp +++ b/include/boost/mpl/pair_view.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ struct pair_iter_ops typedef typename mpl::next::type i1_; typedef typename mpl::next::type i2_; typedef pair_iter next; + typedef pair< typename deref::type, typename deref::type > type; }; }; @@ -104,11 +106,17 @@ struct pair_iter #endif { typedef Category category; - typedef pair type; }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + +template< typename I1, typename I2, typename C > +struct deref< pair_iter > +{ + typedef pair< typename deref::type, typename deref::type > type; +}; + template< typename I1, typename I2, typename C > struct next< pair_iter > { diff --git a/test/find.cpp b/test/find.cpp index 9b168ce..d431994 100644 --- a/test/find.cpp +++ b/test/find.cpp @@ -27,8 +27,8 @@ MPL_TEST_CASE() typedef find::type types_iter; typedef find< values, integral_c >::type values_iter; - MPL_ASSERT(( is_same )); - MPL_ASSERT_RELATION( values_iter::type::value, ==, 7 ); + MPL_ASSERT(( is_same< deref::type, short> )); + MPL_ASSERT_RELATION( deref::type::value, ==, 7 ); typedef begin::type types_first; typedef begin::type values_first; diff --git a/test/joint_view.cpp b/test/joint_view.cpp index 8fd35a2..e114bc2 100644 --- a/test/joint_view.cpp +++ b/test/joint_view.cpp @@ -14,10 +14,12 @@ #include #include +#include #include #include #include + MPL_TEST_CASE() { typedef joint_view< @@ -30,3 +32,24 @@ MPL_TEST_CASE() MPL_ASSERT(( equal )); MPL_ASSERT_RELATION( size::value, ==, 15 ); } + +template< typename View > struct test_is_empty +{ + typedef typename begin::type first_; + typedef typename end::type last_; + + MPL_ASSERT_RELATION( size::value, ==, 0 ); + MPL_ASSERT(( is_same< first_,last_> )); + + MPL_ASSERT_INSTANTIATION( View ); + MPL_ASSERT_INSTANTIATION( first_ ); + MPL_ASSERT_INSTANTIATION( last_ ); +}; + +MPL_TEST_CASE() +{ + test_is_empty< joint_view< list0<>,list0<> > >(); + test_is_empty< joint_view< list<>,list0<> > >(); + test_is_empty< joint_view< list<>,list<> > >(); + test_is_empty< joint_view< list<>, joint_view< list0<>,list0<> > > >(); +}