diff --git a/include/boost/mpl/replace.hpp b/include/boost/mpl/replace.hpp index 74323ce..0abfc0c 100644 --- a/include/boost/mpl/replace.hpp +++ b/include/boost/mpl/replace.hpp @@ -18,24 +18,37 @@ #include #include -#include -#include +#include namespace boost { namespace mpl { -BOOST_MPL_AUX_COMMON_NAME_WKND(replace) +namespace aux { template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(OldType) - , typename BOOST_MPL_AUX_NA_PARAM(NewType) + typename Sequence + , typename OldType + , typename NewType + , typename Inserter > -struct replace - : replace_if< Sequence, same_as, NewType > +struct replace_impl + : replace_if_impl< Sequence, same_as, NewType, Inserter > { }; -BOOST_MPL_AUX_NA_SPEC(3, replace) +template< + typename Sequence + , typename OldType + , typename NewType + , typename Inserter + > +struct reverse_replace_impl + : reverse_replace_if_impl< Sequence, same_as, NewType, Inserter > +{ +}; + +} // namespace aux + +BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, replace) }} diff --git a/include/boost/mpl/replace_if.hpp b/include/boost/mpl/replace_if.hpp index 0920757..f181b2e 100644 --- a/include/boost/mpl/replace_if.hpp +++ b/include/boost/mpl/replace_if.hpp @@ -19,14 +19,11 @@ #include #include #include -#include -#include +#include #include namespace boost { namespace mpl { -BOOST_MPL_AUX_COMMON_NAME_WKND(replace_if) - namespace aux { template< typename Predicate, typename T > @@ -51,16 +48,15 @@ struct replace_if_op }; }; -} // namespace aux template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(Predicate) - , typename BOOST_MPL_AUX_NA_PARAM(T) - , typename BOOST_MPL_AUX_NA_PARAM(Inserter) + typename Sequence + , typename Predicate + , typename T + , typename Inserter > -struct replace_if - : transform1< +struct replace_if_impl + : transform1_impl< Sequence , protect< aux::replace_if_op > , Inserter @@ -68,7 +64,24 @@ struct replace_if { }; -BOOST_MPL_AUX_NA_SPEC(3, replace_if) +template< + typename Sequence + , typename Predicate + , typename T + , typename Inserter + > +struct reverse_replace_if_impl + : reverse_transform1_impl< + Sequence + , protect< aux::replace_if_op > + , Inserter + > +{ +}; + +} // namespace aux + +BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, replace_if) }}