1 /*=============================================================================
2     Copyright (c) 2001-2006 Joel de Guzman
3 
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #if !defined(FUSION_REPLACE_IF_08182005_0939)
8 #define FUSION_REPLACE_IF_08182005_0939
9 
10 #include <boost/fusion/view/transform_view/transform_view.hpp>
11 #include <boost/fusion/algorithm/transformation/detail/replace_if.hpp>
12 #include <boost/utility/enable_if.hpp>
13 #include <boost/type_traits/is_same.hpp>
14 
15 namespace boost { namespace fusion
16 {
17     namespace result_of
18     {
19         template <typename Sequence, typename F, typename T>
20         struct replace_if
21         {
22             typedef transform_view<Sequence, detail::replacer_if<F, T> > type;
23         };
24     }
25 
26     template <typename Sequence, typename F, typename T>
27     inline typename result_of::replace_if<Sequence const, F, T>::type
replace_if(Sequence const & seq,F pred,T const & new_value)28     replace_if(Sequence const& seq, F pred, T const& new_value)
29     {
30         typedef typename result_of::replace_if<Sequence const, F, T>::type result;
31         detail::replacer_if<F, T> f(pred, new_value);
32         return result(seq, f);
33     }
34 }}
35 
36 #endif
37 
38