1 /*=============================================================================
2 Copyright (c) 2010 Christopher Schmidt
3 Copyright (c) 2001-2011 Joel de Guzman
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 This is an auto-generated file. Do not edit!
9 ==============================================================================*/
10 # if BOOST_WORKAROUND (BOOST_MSVC, < 1500)
11 # define BOOST_FUSION_FOLD_IMPL_ENABLER(T) void
13 # define BOOST_FUSION_FOLD_IMPL_ENABLER(T) typename T::type
15 namespace boost { namespace fusion
19 template<int SeqSize, typename It, typename State, typename F, typename = void
20 # if BOOST_WORKAROUND (BOOST_MSVC, < 1500)
25 struct result_of_it_reverse_iter_fold
27 template<typename It, typename State, typename F>
28 struct result_of_it_reverse_iter_fold<0,It,State,F
29 , typename boost::enable_if_has_type<BOOST_FUSION_FOLD_IMPL_ENABLER(State)>::type
30 # if BOOST_WORKAROUND (BOOST_MSVC, < 1500)
35 typedef typename State::type type;
37 template<int SeqSize, typename It, typename State, typename F>
38 struct result_of_it_reverse_iter_fold<SeqSize,It,State,F
39 , typename boost::enable_if_has_type<
40 # if BOOST_WORKAROUND (BOOST_MSVC, >= 1500)
44 typename boost::disable_if_c<SeqSize == 0, State>::type::type
46 BOOST_FUSION_FOLD_IMPL_ENABLER(State)
49 # if BOOST_WORKAROUND (BOOST_MSVC, < 1500)
53 : result_of_it_reverse_iter_fold<
55 , typename result_of::prior<It>::type
58 typename add_reference<typename State::type>::type,
65 template<typename It, typename State, typename F>
66 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
67 inline typename result_of_it_reverse_iter_fold<
73 it_reverse_iter_fold(mpl::int_<0>, It const&, typename State::type state, F&)
77 template<typename It, typename State, typename F, int SeqSize>
78 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
79 inline typename lazy_enable_if_c<
81 , result_of_it_reverse_iter_fold<
88 it_reverse_iter_fold(mpl::int_<SeqSize>, It const& it, typename State::type state, F& f)
90 return it_reverse_iter_fold<
91 typename result_of::prior<It>::type
94 typename add_reference<typename State::type>::type,
100 mpl::int_<SeqSize-1>()
106 template<typename Seq, typename State, typename F
107 , bool = traits::is_sequence<Seq>::value
108 , bool = traits::is_segmented<Seq>::value>
109 struct result_of_reverse_iter_fold
111 template<typename Seq, typename State, typename F>
112 struct result_of_reverse_iter_fold<Seq, State, F, true, false>
113 : result_of_it_reverse_iter_fold<
114 result_of::size<Seq>::value
115 , typename fusion::result_of::prior< typename result_of::end<Seq>::type >::type
116 , add_reference<State>
120 template<typename Seq, typename State, typename F>
121 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
122 inline typename result_of_reverse_iter_fold<Seq, State, F>::type
123 reverse_iter_fold(Seq& seq, State& state, F& f)
125 return it_reverse_iter_fold<
126 typename fusion::result_of::prior< typename result_of::end<Seq>::type >::type
127 , add_reference<State>
130 typename result_of::size<Seq>::type()
131 , fusion::prior( fusion::end(seq) )
139 template<typename Seq, typename State, typename F>
140 struct reverse_iter_fold
141 : detail::result_of_reverse_iter_fold<Seq, State, F>
144 template<typename Seq, typename State, typename F>
145 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
146 inline typename result_of::reverse_iter_fold<
151 reverse_iter_fold(Seq& seq, State const& state, F f)
153 return detail::reverse_iter_fold<Seq, State const, F>(seq, state, f);
155 template<typename Seq, typename State, typename F>
156 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
157 inline typename result_of::reverse_iter_fold<
162 reverse_iter_fold(Seq const& seq, State const& state, F f)
164 return detail::reverse_iter_fold<Seq const, State const, F>(seq, state, f);
166 template<typename Seq, typename State, typename F>
167 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
168 inline typename result_of::reverse_iter_fold<
173 reverse_iter_fold(Seq& seq, State& state, F f)
175 return detail::reverse_iter_fold<Seq, State, F>(seq, state, f);
177 template<typename Seq, typename State, typename F>
178 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
179 inline typename result_of::reverse_iter_fold<
184 reverse_iter_fold(Seq const& seq, State& state, F f)
186 return detail::reverse_iter_fold<Seq const, State, F>(seq, state, f);
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams