mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-03 14:54:30 +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/aux_/lambda_spec.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 aux {
|
||||
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
|
||||
template<
|
||||
@@ -36,13 +37,6 @@ struct joint_iter
|
||||
{
|
||||
typedef Iterator1 base;
|
||||
typedef forward_iterator_tag category;
|
||||
typedef joint_iter<
|
||||
typename mpl::next<base>::type
|
||||
, LastIterator1
|
||||
, Iterator2
|
||||
> next;
|
||||
|
||||
typedef typename deref<base>::type type;
|
||||
};
|
||||
|
||||
template<
|
||||
@@ -53,19 +47,30 @@ struct joint_iter<LastIterator1,LastIterator1,Iterator2>
|
||||
{
|
||||
typedef Iterator2 base;
|
||||
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<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
@@ -75,47 +80,26 @@ struct joint_iter;
|
||||
|
||||
template< bool > struct joint_iter_impl
|
||||
{
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct result_
|
||||
template< typename I1, typename L1, typename I2 > struct result_
|
||||
{
|
||||
typedef Iterator1 base;
|
||||
typedef I1 base;
|
||||
typedef forward_iterator_tag category;
|
||||
typedef joint_iter<
|
||||
typename mpl::next<Iterator1>::type
|
||||
, LastIterator1
|
||||
, Iterator2
|
||||
> next;
|
||||
|
||||
typedef typename deref<Iterator1>::type type;
|
||||
typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > next;
|
||||
typedef typename deref<I1>::type type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct joint_iter_impl<true>
|
||||
{
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct result_
|
||||
template< typename I1, typename L1, typename I2 > struct result_
|
||||
{
|
||||
typedef Iterator2 base;
|
||||
typedef I2 base;
|
||||
typedef forward_iterator_tag category;
|
||||
typedef joint_iter<
|
||||
LastIterator1
|
||||
, LastIterator1
|
||||
, typename mpl::next<Iterator2>::type
|
||||
> next;
|
||||
|
||||
typedef typename deref<Iterator2>::type type;
|
||||
typedef joint_iter< L1,L1,typename mpl::next<I2>::type > next;
|
||||
typedef typename deref<I2>::type type;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
@@ -129,9 +113,7 @@ struct joint_iter
|
||||
|
||||
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
} // namespace aux
|
||||
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, aux::joint_iter)
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter)
|
||||
|
||||
}}
|
||||
|
||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
||||
typedef reverse_fold_chunk< -1 >::template result_<
|
||||
typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
||||
typedef reverse_fold_chunk< -1 >::template result_<
|
||||
typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
-1
|
||||
, typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
-1
|
||||
, typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -66,12 +66,12 @@ template<> struct reverse_fold_chunk<1>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -98,15 +98,15 @@ template<> struct reverse_fold_chunk<2>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -135,18 +135,18 @@ template<> struct reverse_fold_chunk<3>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -175,21 +175,21 @@ template<> struct reverse_fold_chunk<4>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -219,13 +219,13 @@ struct reverse_fold_chunk
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -239,10 +239,10 @@ struct reverse_fold_chunk
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -312,7 +312,7 @@ struct reverse_fold_step
|
||||
typedef reverse_fold_chunk< -1 >::template result_<
|
||||
typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -320,7 +320,7 @@ struct reverse_fold_step
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
||||
typedef reverse_fold_chunk< -1 >::template result_<
|
||||
typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
-1
|
||||
, typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -58,12 +58,12 @@ template<> struct reverse_fold_chunk<1>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -82,15 +82,15 @@ template<> struct reverse_fold_chunk<2>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -111,18 +111,18 @@ template<> struct reverse_fold_chunk<3>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -143,21 +143,21 @@ template<> struct reverse_fold_chunk<4>
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -179,13 +179,13 @@ struct reverse_fold_chunk
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -199,10 +199,10 @@ struct reverse_fold_chunk
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -264,7 +264,7 @@ struct reverse_fold_step
|
||||
typedef reverse_fold_chunk< -1 >::template result_<
|
||||
typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -272,7 +272,7 @@ struct reverse_fold_step
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
-1
|
||||
, typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -50,12 +50,12 @@ struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
typedef typename next<iter0>::type iter1;
|
||||
|
||||
|
||||
typedef fwd_state1 bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
typedef bkwd_state0 state;
|
||||
typedef iter1 iterator;
|
||||
};
|
||||
@@ -71,15 +71,15 @@ struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 fwd_state2 bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -97,18 +97,18 @@ struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 fwd_state3 bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -126,21 +126,21 @@ struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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 fwd_state4 bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -159,13 +159,13 @@ struct reverse_fold_impl
|
||||
{
|
||||
typedef First iter0;
|
||||
typedef State fwd_state0;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename iter0::type >::type fwd_state1;
|
||||
typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
|
||||
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 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 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;
|
||||
|
||||
|
||||
@@ -179,10 +179,10 @@ struct reverse_fold_impl
|
||||
> nested_chunk;
|
||||
|
||||
typedef typename nested_chunk::state bkwd_state4;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename iter3::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename iter2::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename iter1::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename iter0::type >::type bkwd_state0;
|
||||
typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
|
||||
typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
|
||||
typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
|
||||
typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
|
||||
|
||||
|
||||
typedef bkwd_state0 state;
|
||||
@@ -202,7 +202,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
-1
|
||||
, typename next<First>::type
|
||||
, Last
|
||||
, typename apply2<ForwardOp,State, typename First::type>::type
|
||||
, typename apply2<ForwardOp,State, typename deref<First>::type>::type
|
||||
, BackwardOp
|
||||
, ForwardOp
|
||||
> nested_step;
|
||||
@@ -210,7 +210,7 @@ struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
|
||||
typedef typename apply2<
|
||||
BackwardOp
|
||||
, typename nested_step::state
|
||||
, typename First::type
|
||||
, typename deref<First>::type
|
||||
>::type state;
|
||||
|
||||
typedef typename nested_step::iterator iterator;
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
# include <boost/mpl/next_prior.hpp>
|
||||
# include <boost/mpl/deref.hpp>
|
||||
# include <boost/mpl/apply.hpp>
|
||||
# include <boost/mpl/aux_/config/ctps.hpp>
|
||||
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||
@@ -35,7 +36,7 @@
|
||||
|
||||
#else
|
||||
|
||||
# define AUX778076_FOLD_IMPL_OP(iter) typename iter::type
|
||||
# define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
|
||||
# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
|
||||
# include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
|
||||
|
||||
|
@@ -15,10 +15,15 @@
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/assert.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
|
||||
#define MPL_ASSERT(pred) BOOST_MPL_ASSERT(pred)
|
||||
#define MPL_ASSERT_NOT(pred) BOOST_MPL_ASSERT_NOT(pred)
|
||||
#define MPL_ASSERT_MSG(c, msg, types) BOOST_MPL_ASSERT_MSG(c, msg, types)
|
||||
#define MPL_ASSERT_RELATION(x, rel, y) BOOST_MPL_ASSERT_RELATION(x, rel, y)
|
||||
|
||||
#define MPL_ASSERT_INSTANTIATION(x) \
|
||||
enum { BOOST_PP_CAT(instantiation_test, __LINE__) = sizeof( x ) } \
|
||||
/**/
|
||||
|
||||
#endif // BOOST_MPL_AUX_TEST_ASSERT_HPP_INCLUDED
|
||||
|
@@ -54,8 +54,8 @@ struct joint_view
|
||||
|
||||
typedef joint_view type;
|
||||
typedef aux::joint_view_tag tag;
|
||||
typedef typename aux::joint_iter<first1_,last1_,first2_> begin;
|
||||
typedef typename aux::joint_iter<last1_,last1_,last2_> end;
|
||||
typedef joint_iter<first1_,last1_,first2_> begin;
|
||||
typedef joint_iter<last1_,last1_,last2_> end;
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_NA_SPEC(2, joint_view)
|
||||
|
@@ -16,11 +16,37 @@
|
||||
|
||||
#include <boost/mpl/iterator_tags.hpp>
|
||||
#include <boost/mpl/next_prior.hpp>
|
||||
#include <boost/mpl/deref.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_/config/ctps.hpp>
|
||||
|
||||
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 >
|
||||
struct l_iter
|
||||
{
|
||||
@@ -30,13 +56,20 @@ struct l_iter
|
||||
typedef l_iter< typename mpl::next<Node>::type > next;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
template<> struct l_iter<l_end>
|
||||
{
|
||||
typedef aux::l_iter_tag tag;
|
||||
typedef forward_iterator_tag category;
|
||||
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
typedef na type;
|
||||
typedef l_iter next;
|
||||
#endif
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1,l_iter)
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, l_iter)
|
||||
|
||||
}}
|
||||
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include <boost/mpl/advance.hpp>
|
||||
#include <boost/mpl/distance.hpp>
|
||||
#include <boost/mpl/next_prior.hpp>
|
||||
#include <boost/mpl/deref.hpp>
|
||||
#include <boost/mpl/min_max.hpp>
|
||||
#include <boost/mpl/pair.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<I2>::type i2_;
|
||||
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
|
||||
{
|
||||
typedef Category category;
|
||||
typedef pair<typename I1::type, typename I2::type> type;
|
||||
};
|
||||
|
||||
|
||||
#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 >
|
||||
struct next< pair_iter<I1,I2,C> >
|
||||
{
|
||||
|
@@ -27,8 +27,8 @@ MPL_TEST_CASE()
|
||||
typedef find<types, short>::type types_iter;
|
||||
typedef find< values, integral_c<int,7> >::type values_iter;
|
||||
|
||||
MPL_ASSERT(( is_same<types_iter::type, short> ));
|
||||
MPL_ASSERT_RELATION( values_iter::type::value, ==, 7 );
|
||||
MPL_ASSERT(( is_same< deref<types_iter>::type, short> ));
|
||||
MPL_ASSERT_RELATION( deref<values_iter>::type::value, ==, 7 );
|
||||
|
||||
typedef begin<types>::type types_first;
|
||||
typedef begin<values>::type values_first;
|
||||
|
@@ -14,10 +14,12 @@
|
||||
#include <boost/mpl/joint_view.hpp>
|
||||
|
||||
#include <boost/mpl/range_c.hpp>
|
||||
#include <boost/mpl/list.hpp>
|
||||
#include <boost/mpl/equal.hpp>
|
||||
#include <boost/mpl/size.hpp>
|
||||
#include <boost/mpl/aux_/test.hpp>
|
||||
|
||||
|
||||
MPL_TEST_CASE()
|
||||
{
|
||||
typedef joint_view<
|
||||
@@ -30,3 +32,24 @@ MPL_TEST_CASE()
|
||||
MPL_ASSERT(( equal<numbers,answer> ));
|
||||
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