mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-03 23:04:33 +02:00
convert replace/replace_if into sequence-building algorithms
[SVN r26153]
This commit is contained in:
@@ -18,24 +18,37 @@
|
|||||||
|
|
||||||
#include <boost/mpl/replace_if.hpp>
|
#include <boost/mpl/replace_if.hpp>
|
||||||
#include <boost/mpl/same_as.hpp>
|
#include <boost/mpl/same_as.hpp>
|
||||||
#include <boost/mpl/aux_/common_name_wknd.hpp>
|
#include <boost/mpl/aux_/inserter_algorithm.hpp>
|
||||||
#include <boost/mpl/aux_/na_spec.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace mpl {
|
namespace boost { namespace mpl {
|
||||||
|
|
||||||
BOOST_MPL_AUX_COMMON_NAME_WKND(replace)
|
namespace aux {
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(Sequence)
|
typename Sequence
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(OldType)
|
, typename OldType
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(NewType)
|
, typename NewType
|
||||||
|
, typename Inserter
|
||||||
>
|
>
|
||||||
struct replace
|
struct replace_impl
|
||||||
: replace_if< Sequence, same_as<OldType>, NewType >
|
: replace_if_impl< Sequence, same_as<OldType>, 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<OldType>, NewType, Inserter >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace aux
|
||||||
|
|
||||||
|
BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, replace)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -19,14 +19,11 @@
|
|||||||
#include <boost/mpl/transform.hpp>
|
#include <boost/mpl/transform.hpp>
|
||||||
#include <boost/mpl/apply.hpp>
|
#include <boost/mpl/apply.hpp>
|
||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/mpl/aux_/common_name_wknd.hpp>
|
#include <boost/mpl/aux_/inserter_algorithm.hpp>
|
||||||
#include <boost/mpl/aux_/na_spec.hpp>
|
|
||||||
#include <boost/mpl/aux_/config/forwarding.hpp>
|
#include <boost/mpl/aux_/config/forwarding.hpp>
|
||||||
|
|
||||||
namespace boost { namespace mpl {
|
namespace boost { namespace mpl {
|
||||||
|
|
||||||
BOOST_MPL_AUX_COMMON_NAME_WKND(replace_if)
|
|
||||||
|
|
||||||
namespace aux {
|
namespace aux {
|
||||||
|
|
||||||
template< typename Predicate, typename T >
|
template< typename Predicate, typename T >
|
||||||
@@ -51,16 +48,15 @@ struct replace_if_op
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aux
|
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(Sequence)
|
typename Sequence
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(Predicate)
|
, typename Predicate
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(T)
|
, typename T
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(Inserter)
|
, typename Inserter
|
||||||
>
|
>
|
||||||
struct replace_if
|
struct replace_if_impl
|
||||||
: transform1<
|
: transform1_impl<
|
||||||
Sequence
|
Sequence
|
||||||
, protect< aux::replace_if_op<Predicate,T> >
|
, protect< aux::replace_if_op<Predicate,T> >
|
||||||
, Inserter
|
, 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<Predicate,T> >
|
||||||
|
, Inserter
|
||||||
|
>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace aux
|
||||||
|
|
||||||
|
BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, replace_if)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user