1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
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_08182005_0830)
8 #define FUSION_REPLACE_08182005_0830
10 #include <boost/fusion/support/config.hpp>
11 #include <boost/fusion/view/transform_view/transform_view.hpp>
12 #include <boost/fusion/algorithm/transformation/detail/replace.hpp>
13 #include <boost/fusion/support/is_sequence.hpp>
14 #include <boost/utility/enable_if.hpp>
16 namespace boost { namespace fusion
20 template <typename Sequence, typename T>
23 typedef transform_view<Sequence, detail::replacer<T> > type;
27 template <typename Sequence, typename T>
28 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
31 traits::is_sequence<Sequence>
32 , typename result_of::replace<Sequence const, T>::type
34 replace(Sequence const& seq, T const& old_value, T const& new_value)
36 typedef typename result_of::replace<Sequence const, T>::type result;
37 detail::replacer<T> f(old_value, new_value);
38 return result(seq, f);