mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-06 00:04:35 +02:00
various iterator fixes
[SVN r25513]
This commit is contained in:
@@ -19,12 +19,13 @@
|
|||||||
#include <boost/mpl/iterator_tags.hpp>
|
#include <boost/mpl/iterator_tags.hpp>
|
||||||
#include <boost/mpl/aux_/lambda_spec.hpp>
|
#include <boost/mpl/aux_/lambda_spec.hpp>
|
||||||
#include <boost/mpl/aux_/config/ctps.hpp>
|
#include <boost/mpl/aux_/config/ctps.hpp>
|
||||||
#include <boost/type_traits/is_same.hpp>
|
|
||||||
|
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
|
# include <boost/type_traits/is_same.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace boost { namespace mpl {
|
namespace boost { namespace mpl {
|
||||||
|
|
||||||
namespace aux {
|
|
||||||
|
|
||||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
|
|
||||||
template<
|
template<
|
||||||
@@ -36,13 +37,6 @@ struct joint_iter
|
|||||||
{
|
{
|
||||||
typedef Iterator1 base;
|
typedef Iterator1 base;
|
||||||
typedef forward_iterator_tag category;
|
typedef forward_iterator_tag category;
|
||||||
typedef joint_iter<
|
|
||||||
typename mpl::next<base>::type
|
|
||||||
, LastIterator1
|
|
||||||
, Iterator2
|
|
||||||
> next;
|
|
||||||
|
|
||||||
typedef typename deref<base>::type type;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<
|
template<
|
||||||
@@ -53,19 +47,30 @@ struct joint_iter<LastIterator1,LastIterator1,Iterator2>
|
|||||||
{
|
{
|
||||||
typedef Iterator2 base;
|
typedef Iterator2 base;
|
||||||
typedef forward_iterator_tag category;
|
typedef forward_iterator_tag category;
|
||||||
typedef joint_iter<
|
|
||||||
LastIterator1
|
|
||||||
, LastIterator1
|
|
||||||
, typename mpl::next<base>::type
|
|
||||||
> next;
|
|
||||||
|
|
||||||
typedef typename deref<base>::type type;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#else
|
template< typename I1, typename L1, typename I2 >
|
||||||
|
struct deref< joint_iter<I1,L1,I2> >
|
||||||
|
{
|
||||||
|
typedef typename joint_iter<I1,L1,I2>::base base_;
|
||||||
|
typedef typename deref<base_>::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template< typename I1, typename L1, typename I2 >
|
||||||
|
struct next< joint_iter<I1,L1,I2> >
|
||||||
|
{
|
||||||
|
typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template< typename L1, typename I2 >
|
||||||
|
struct next< joint_iter<L1,L1,I2> >
|
||||||
|
{
|
||||||
|
typedef joint_iter< L1,L1,typename mpl::next<I2>::type > type;
|
||||||
|
};
|
||||||
|
|
||||||
|
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
// forward decl. for 'joint_iter_impl'
|
|
||||||
template<
|
template<
|
||||||
typename Iterator1
|
typename Iterator1
|
||||||
, typename LastIterator1
|
, typename LastIterator1
|
||||||
@@ -75,47 +80,26 @@ struct joint_iter;
|
|||||||
|
|
||||||
template< bool > struct joint_iter_impl
|
template< bool > struct joint_iter_impl
|
||||||
{
|
{
|
||||||
template<
|
template< typename I1, typename L1, typename I2 > struct result_
|
||||||
typename Iterator1
|
|
||||||
, typename LastIterator1
|
|
||||||
, typename Iterator2
|
|
||||||
>
|
|
||||||
struct result_
|
|
||||||
{
|
{
|
||||||
typedef Iterator1 base;
|
typedef I1 base;
|
||||||
typedef forward_iterator_tag category;
|
typedef forward_iterator_tag category;
|
||||||
typedef joint_iter<
|
typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > next;
|
||||||
typename mpl::next<Iterator1>::type
|
typedef typename deref<I1>::type type;
|
||||||
, LastIterator1
|
|
||||||
, Iterator2
|
|
||||||
> next;
|
|
||||||
|
|
||||||
typedef typename deref<Iterator1>::type type;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<> struct joint_iter_impl<true>
|
template<> struct joint_iter_impl<true>
|
||||||
{
|
{
|
||||||
template<
|
template< typename I1, typename L1, typename I2 > struct result_
|
||||||
typename Iterator1
|
|
||||||
, typename LastIterator1
|
|
||||||
, typename Iterator2
|
|
||||||
>
|
|
||||||
struct result_
|
|
||||||
{
|
{
|
||||||
typedef Iterator2 base;
|
typedef I2 base;
|
||||||
typedef forward_iterator_tag category;
|
typedef forward_iterator_tag category;
|
||||||
typedef joint_iter<
|
typedef joint_iter< L1,L1,typename mpl::next<I2>::type > next;
|
||||||
LastIterator1
|
typedef typename deref<I2>::type type;
|
||||||
, LastIterator1
|
|
||||||
, typename mpl::next<Iterator2>::type
|
|
||||||
> next;
|
|
||||||
|
|
||||||
typedef typename deref<Iterator2>::type type;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename Iterator1
|
typename Iterator1
|
||||||
, typename LastIterator1
|
, typename LastIterator1
|
||||||
@@ -129,9 +113,7 @@ struct joint_iter
|
|||||||
|
|
||||||
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
} // namespace aux
|
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter)
|
||||||
|
|
||||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, aux::joint_iter)
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
|||||||
typedef reverse_fold_chunk< -1 >::template result_<
|
typedef reverse_fold_chunk< -1 >::template result_<
|
||||||
typename next<First>::type
|
typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
|||||||
typedef reverse_fold_chunk< -1 >::template result_<
|
typedef reverse_fold_chunk< -1 >::template result_<
|
||||||
typename next<First>::type
|
typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
-1
|
-1
|
||||||
, typename next<First>::type
|
, typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
-1
|
-1
|
||||||
, typename next<First>::type
|
, typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -66,12 +66,12 @@ template<> struct reverse_fold_chunk<1>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -98,15 +98,15 @@ template<> struct reverse_fold_chunk<2>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -135,18 +135,18 @@ template<> struct reverse_fold_chunk<3>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -175,21 +175,21 @@ template<> struct reverse_fold_chunk<4>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -219,13 +219,13 @@ struct reverse_fold_chunk
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -239,10 +239,10 @@ struct reverse_fold_chunk
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -312,7 +312,7 @@ struct reverse_fold_step
|
|||||||
typedef reverse_fold_chunk< -1 >::template result_<
|
typedef reverse_fold_chunk< -1 >::template result_<
|
||||||
typename next<First>::type
|
typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -320,7 +320,7 @@ struct reverse_fold_step
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
|||||||
typedef reverse_fold_chunk< -1 >::template result_<
|
typedef reverse_fold_chunk< -1 >::template result_<
|
||||||
typename next<First>::type
|
typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
-1
|
-1
|
||||||
, typename next<First>::type
|
, typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
|||||||
typedef reverse_fold_chunk< -1 >::template result_<
|
typedef reverse_fold_chunk< -1 >::template result_<
|
||||||
typename next<First>::type
|
typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
-1
|
-1
|
||||||
, typename next<First>::type
|
, typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state1 bkwd_state1;
|
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<iter0>::type >::type bkwd_state0;
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
typedef iter1 iterator;
|
typedef iter1 iterator;
|
||||||
};
|
};
|
||||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state2 bkwd_state2;
|
typedef fwd_state2 bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state3 bkwd_state3;
|
typedef fwd_state3 bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
typedef fwd_state4 bkwd_state4;
|
typedef fwd_state4 bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
|||||||
{
|
{
|
||||||
typedef First iter0;
|
typedef First iter0;
|
||||||
typedef State fwd_state0;
|
typedef State fwd_state0;
|
||||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||||
typedef typename next<iter0>::type iter1;
|
typedef typename next<iter0>::type iter1;
|
||||||
typedef typename apply2< ForwardOp, fwd_state1, typename iter1::type >::type fwd_state2;
|
typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
|
||||||
typedef typename next<iter1>::type iter2;
|
typedef typename next<iter1>::type iter2;
|
||||||
typedef typename apply2< ForwardOp, fwd_state2, typename iter2::type >::type fwd_state3;
|
typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
|
||||||
typedef typename next<iter2>::type iter3;
|
typedef typename next<iter2>::type iter3;
|
||||||
typedef typename apply2< ForwardOp, fwd_state3, typename iter3::type >::type fwd_state4;
|
typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
|
||||||
typedef typename next<iter3>::type iter4;
|
typedef typename next<iter3>::type iter4;
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
|||||||
> nested_chunk;
|
> nested_chunk;
|
||||||
|
|
||||||
typedef typename nested_chunk::state bkwd_state4;
|
typedef typename nested_chunk::state bkwd_state4;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||||
|
|
||||||
|
|
||||||
typedef bkwd_state0 state;
|
typedef bkwd_state0 state;
|
||||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
-1
|
-1
|
||||||
, typename next<First>::type
|
, typename next<First>::type
|
||||||
, Last
|
, Last
|
||||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||||
, BackwardOp
|
, BackwardOp
|
||||||
, ForwardOp
|
, ForwardOp
|
||||||
> nested_step;
|
> nested_step;
|
||||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
|||||||
typedef typename apply2<
|
typedef typename apply2<
|
||||||
BackwardOp
|
BackwardOp
|
||||||
, typename nested_step::state
|
, typename nested_step::state
|
||||||
, typename First::type
|
, typename deref<First>::type
|
||||||
>::type state;
|
>::type state;
|
||||||
|
|
||||||
typedef typename nested_step::iterator iterator;
|
typedef typename nested_step::iterator iterator;
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||||
# include <boost/mpl/next_prior.hpp>
|
# include <boost/mpl/next_prior.hpp>
|
||||||
|
# include <boost/mpl/deref.hpp>
|
||||||
# include <boost/mpl/apply.hpp>
|
# include <boost/mpl/apply.hpp>
|
||||||
# include <boost/mpl/aux_/config/ctps.hpp>
|
# include <boost/mpl/aux_/config/ctps.hpp>
|
||||||
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# define AUX778076_FOLD_IMPL_OP(iter) typename iter::type
|
# define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
|
||||||
# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
|
# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
|
||||||
# include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
|
# include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
|
||||||
|
|
||||||
|
@@ -15,10 +15,15 @@
|
|||||||
// $Revision$
|
// $Revision$
|
||||||
|
|
||||||
#include <boost/mpl/assert.hpp>
|
#include <boost/mpl/assert.hpp>
|
||||||
|
#include <boost/preprocessor/cat.hpp>
|
||||||
|
|
||||||
#define MPL_ASSERT(pred) BOOST_MPL_ASSERT(pred)
|
#define MPL_ASSERT(pred) BOOST_MPL_ASSERT(pred)
|
||||||
#define MPL_ASSERT_NOT(pred) BOOST_MPL_ASSERT_NOT(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_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_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
|
#endif // BOOST_MPL_AUX_TEST_ASSERT_HPP_INCLUDED
|
||||||
|
@@ -54,8 +54,8 @@ struct joint_view
|
|||||||
|
|
||||||
typedef joint_view type;
|
typedef joint_view type;
|
||||||
typedef aux::joint_view_tag tag;
|
typedef aux::joint_view_tag tag;
|
||||||
typedef typename aux::joint_iter<first1_,last1_,first2_> begin;
|
typedef joint_iter<first1_,last1_,first2_> begin;
|
||||||
typedef typename aux::joint_iter<last1_,last1_,last2_> end;
|
typedef joint_iter<last1_,last1_,last2_> end;
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC(2, joint_view)
|
BOOST_MPL_AUX_NA_SPEC(2, joint_view)
|
||||||
|
@@ -16,11 +16,37 @@
|
|||||||
|
|
||||||
#include <boost/mpl/iterator_tags.hpp>
|
#include <boost/mpl/iterator_tags.hpp>
|
||||||
#include <boost/mpl/next_prior.hpp>
|
#include <boost/mpl/next_prior.hpp>
|
||||||
|
#include <boost/mpl/deref.hpp>
|
||||||
#include <boost/mpl/list/aux_/item.hpp>
|
#include <boost/mpl/list/aux_/item.hpp>
|
||||||
|
#include <boost/mpl/aux_/na.hpp>
|
||||||
#include <boost/mpl/aux_/lambda_spec.hpp>
|
#include <boost/mpl/aux_/lambda_spec.hpp>
|
||||||
|
#include <boost/mpl/aux_/config/ctps.hpp>
|
||||||
|
|
||||||
namespace boost { namespace mpl {
|
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<Node> >
|
||||||
|
{
|
||||||
|
typedef typename Node::item type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template< typename Node >
|
||||||
|
struct next< l_iter<Node> >
|
||||||
|
{
|
||||||
|
typedef l_iter< typename Node::next > type;
|
||||||
|
};
|
||||||
|
|
||||||
|
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
template< typename Node >
|
template< typename Node >
|
||||||
struct l_iter
|
struct l_iter
|
||||||
{
|
{
|
||||||
@@ -30,13 +56,20 @@ struct l_iter
|
|||||||
typedef l_iter< typename mpl::next<Node>::type > next;
|
typedef l_iter< typename mpl::next<Node>::type > next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
template<> struct l_iter<l_end>
|
template<> struct l_iter<l_end>
|
||||||
{
|
{
|
||||||
typedef aux::l_iter_tag tag;
|
typedef aux::l_iter_tag tag;
|
||||||
typedef forward_iterator_tag category;
|
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)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include <boost/mpl/advance.hpp>
|
#include <boost/mpl/advance.hpp>
|
||||||
#include <boost/mpl/distance.hpp>
|
#include <boost/mpl/distance.hpp>
|
||||||
#include <boost/mpl/next_prior.hpp>
|
#include <boost/mpl/next_prior.hpp>
|
||||||
|
#include <boost/mpl/deref.hpp>
|
||||||
#include <boost/mpl/min_max.hpp>
|
#include <boost/mpl/min_max.hpp>
|
||||||
#include <boost/mpl/pair.hpp>
|
#include <boost/mpl/pair.hpp>
|
||||||
#include <boost/mpl/iterator_tags.hpp>
|
#include <boost/mpl/iterator_tags.hpp>
|
||||||
@@ -44,6 +45,7 @@ struct pair_iter_ops
|
|||||||
typedef typename mpl::next<I1>::type i1_;
|
typedef typename mpl::next<I1>::type i1_;
|
||||||
typedef typename mpl::next<I2>::type i2_;
|
typedef typename mpl::next<I2>::type i2_;
|
||||||
typedef pair_iter<i1_,i2_,Category> next;
|
typedef pair_iter<i1_,i2_,Category> next;
|
||||||
|
typedef pair< typename deref<I1>::type, typename deref<I2>::type > type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -104,11 +106,17 @@ struct pair_iter
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
typedef Category category;
|
typedef Category category;
|
||||||
typedef pair<typename I1::type, typename I2::type> type;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
|
|
||||||
|
template< typename I1, typename I2, typename C >
|
||||||
|
struct deref< pair_iter<I1,I2,C> >
|
||||||
|
{
|
||||||
|
typedef pair< typename deref<I1>::type, typename deref<I2>::type > type;
|
||||||
|
};
|
||||||
|
|
||||||
template< typename I1, typename I2, typename C >
|
template< typename I1, typename I2, typename C >
|
||||||
struct next< pair_iter<I1,I2,C> >
|
struct next< pair_iter<I1,I2,C> >
|
||||||
{
|
{
|
||||||
|
@@ -27,8 +27,8 @@ MPL_TEST_CASE()
|
|||||||
typedef find<types, short>::type types_iter;
|
typedef find<types, short>::type types_iter;
|
||||||
typedef find< values, integral_c<int,7> >::type values_iter;
|
typedef find< values, integral_c<int,7> >::type values_iter;
|
||||||
|
|
||||||
MPL_ASSERT(( is_same<types_iter::type, short> ));
|
MPL_ASSERT(( is_same< deref<types_iter>::type, short> ));
|
||||||
MPL_ASSERT_RELATION( values_iter::type::value, ==, 7 );
|
MPL_ASSERT_RELATION( deref<values_iter>::type::value, ==, 7 );
|
||||||
|
|
||||||
typedef begin<types>::type types_first;
|
typedef begin<types>::type types_first;
|
||||||
typedef begin<values>::type values_first;
|
typedef begin<values>::type values_first;
|
||||||
|
@@ -14,10 +14,12 @@
|
|||||||
#include <boost/mpl/joint_view.hpp>
|
#include <boost/mpl/joint_view.hpp>
|
||||||
|
|
||||||
#include <boost/mpl/range_c.hpp>
|
#include <boost/mpl/range_c.hpp>
|
||||||
|
#include <boost/mpl/list.hpp>
|
||||||
#include <boost/mpl/equal.hpp>
|
#include <boost/mpl/equal.hpp>
|
||||||
#include <boost/mpl/size.hpp>
|
#include <boost/mpl/size.hpp>
|
||||||
#include <boost/mpl/aux_/test.hpp>
|
#include <boost/mpl/aux_/test.hpp>
|
||||||
|
|
||||||
|
|
||||||
MPL_TEST_CASE()
|
MPL_TEST_CASE()
|
||||||
{
|
{
|
||||||
typedef joint_view<
|
typedef joint_view<
|
||||||
@@ -30,3 +32,24 @@ MPL_TEST_CASE()
|
|||||||
MPL_ASSERT(( equal<numbers,answer> ));
|
MPL_ASSERT(( equal<numbers,answer> ));
|
||||||
MPL_ASSERT_RELATION( size<numbers>::value, ==, 15 );
|
MPL_ASSERT_RELATION( size<numbers>::value, ==, 15 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template< typename View > struct test_is_empty
|
||||||
|
{
|
||||||
|
typedef typename begin<View>::type first_;
|
||||||
|
typedef typename end<View>::type last_;
|
||||||
|
|
||||||
|
MPL_ASSERT_RELATION( size<View>::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<> > > >();
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user