Chris@16
|
1 /*=============================================================================
|
Chris@16
|
2 Copyright (c) 2011 Eric Niebler
|
Chris@16
|
3
|
Chris@16
|
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
6 ==============================================================================*/
|
Chris@16
|
7 #if !defined(BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED)
|
Chris@16
|
8 #define BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED
|
Chris@16
|
9
|
Chris@101
|
10 #include <boost/fusion/support/config.hpp>
|
Chris@16
|
11 #include <boost/fusion/support/is_sequence.hpp>
|
Chris@16
|
12 #include <boost/utility/enable_if.hpp>
|
Chris@16
|
13
|
Chris@16
|
14 namespace boost { namespace fusion
|
Chris@16
|
15 {
|
Chris@16
|
16 namespace result_of
|
Chris@16
|
17 {
|
Chris@16
|
18 template <typename Sequence, typename State, typename F>
|
Chris@16
|
19 struct accumulate;
|
Chris@16
|
20 }
|
Chris@16
|
21
|
Chris@16
|
22 template <typename Sequence, typename State, typename F>
|
Chris@101
|
23 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
Chris@101
|
24 inline typename
|
Chris@16
|
25 lazy_enable_if<
|
Chris@16
|
26 traits::is_sequence<Sequence>
|
Chris@16
|
27 , result_of::accumulate<Sequence, State const, F>
|
Chris@16
|
28 >::type
|
Chris@16
|
29 accumulate(Sequence& seq, State const& state, F f);
|
Chris@16
|
30
|
Chris@16
|
31 template <typename Sequence, typename State, typename F>
|
Chris@101
|
32 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
Chris@101
|
33 inline typename
|
Chris@16
|
34 lazy_enable_if<
|
Chris@16
|
35 traits::is_sequence<Sequence>
|
Chris@16
|
36 , result_of::accumulate<Sequence const, State const, F>
|
Chris@16
|
37 >::type
|
Chris@16
|
38 accumulate(Sequence const& seq, State const& state, F f);
|
Chris@16
|
39 }}
|
Chris@16
|
40
|
Chris@16
|
41 #endif
|
Chris@16
|
42
|