summaryrefslogtreecommitdiff
path: root/boost/fusion/algorithm/iteration/accumulate.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/algorithm/iteration/accumulate.hpp')
-rw-r--r--boost/fusion/algorithm/iteration/accumulate.hpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/boost/fusion/algorithm/iteration/accumulate.hpp b/boost/fusion/algorithm/iteration/accumulate.hpp
index a8d6a357a2..4b676dea6a 100644
--- a/boost/fusion/algorithm/iteration/accumulate.hpp
+++ b/boost/fusion/algorithm/iteration/accumulate.hpp
@@ -9,6 +9,8 @@
#include <boost/fusion/algorithm/iteration/accumulate_fwd.hpp>
#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
namespace boost { namespace fusion
{
@@ -23,14 +25,24 @@ namespace boost { namespace fusion
}
template <typename Sequence, typename State, typename F>
- inline typename result_of::accumulate<Sequence, State const, F>::type
+ inline
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::accumulate<Sequence, State const, F>
+ >::type
accumulate(Sequence& seq, State const& state, F f)
{
return fusion::fold(seq, state, f);
}
template <typename Sequence, typename State, typename F>
- inline typename result_of::accumulate<Sequence const, State const, F>::type
+ inline
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::accumulate<Sequence const, State const, F>
+ >::type
accumulate(Sequence const& seq, State const& state, F f)
{
return fusion::fold(seq, state, f);