forked from boostorg/fusion
loop unrolling for fusion iteration algorithms
[SVN r37806]
This commit is contained in:
@ -7,9 +7,7 @@
|
||||
#if !defined(FUSION_ACCUMULATE_09172005_1032)
|
||||
#define FUSION_ACCUMULATE_09172005_1032
|
||||
|
||||
#include <boost/fusion/algorithm/iteration/detail/fold.hpp>
|
||||
#include <boost/fusion/iterator/equal_to.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
#include <boost/fusion/algorithm/iteration/fold.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
@ -19,46 +17,22 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template <typename Sequence, typename State, typename F>
|
||||
struct accumulate
|
||||
{
|
||||
typedef typename
|
||||
detail::static_fold<
|
||||
typename result_of::begin<Sequence>::type
|
||||
, typename result_of::end<Sequence>::type
|
||||
, State
|
||||
, F
|
||||
>::type
|
||||
type;
|
||||
};
|
||||
: result_of::fold<Sequence, State, F>
|
||||
{};
|
||||
}
|
||||
|
||||
template <typename Sequence, typename State, typename F>
|
||||
inline typename result_of::accumulate<Sequence, State, F>::type
|
||||
accumulate(Sequence& seq, State const& state, F const& f)
|
||||
{
|
||||
return detail::fold(
|
||||
fusion::begin(seq)
|
||||
, fusion::end(seq)
|
||||
, state
|
||||
, f
|
||||
, result_of::equal_to<
|
||||
typename result_of::begin<Sequence>::type
|
||||
, typename result_of::end<Sequence>::type>()
|
||||
);
|
||||
return fusion::fold(seq, state, f);
|
||||
}
|
||||
|
||||
template <typename Sequence, typename State, typename F>
|
||||
inline typename result_of::accumulate<Sequence const, State, F>::type
|
||||
accumulate(Sequence const& seq, State const& state, F const& f)
|
||||
{
|
||||
return detail::fold(
|
||||
fusion::begin(seq)
|
||||
, fusion::end(seq)
|
||||
, state
|
||||
, f
|
||||
, result_of::equal_to<
|
||||
typename result_of::begin<Sequence const>::type
|
||||
, typename result_of::end<Sequence const>::type>()
|
||||
);
|
||||
return fusion::fold(seq, state, f);
|
||||
}
|
||||
}}
|
||||
|
||||
|
Reference in New Issue
Block a user