123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED
- #define BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED
- // Copyright Eric Friedman 2002-2003
- // Copyright Aleksey Gurtovoy 2004
- //
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // See http://www.boost.org/libs/mpl for documentation.
- // $Id$
- // $Date$
- // $Revision$
- #include <boost/mpl/fold.hpp>
- #include <boost/mpl/reverse_fold.hpp>
- #include <boost/mpl/protect.hpp>
- #include <boost/mpl/aux_/partition_op.hpp>
- #include <boost/mpl/aux_/inserter_algorithm.hpp>
- #include <boost/mpl/aux_/na.hpp>
- namespace boost { namespace mpl {
- namespace aux {
-
- template <
- typename Sequence
- , typename Pred
- , typename In
- , typename In2
- , typename In1 = typename if_na<In,In2>::type
- >
- struct stable_partition_impl
- : fold<
- Sequence
- , pair< typename In1::state, typename In2::state >
- , protect< partition_op<
- Pred
- , typename In1::operation
- , typename In2::operation
- > >
- >
- {
- };
- template <
- typename Sequence
- , typename Pred
- , typename In
- , typename In2
- , typename In1 = typename if_na<In,In2>::type
- >
- struct reverse_stable_partition_impl
- : reverse_fold<
- Sequence
- , pair< typename In1::state, typename In2::state >
- , protect< partition_op<
- Pred
- , typename In1::operation
- , typename In2::operation
- > >
- >
- {
- };
- } // namespace aux
- BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, stable_partition)
- }}
- #endif // BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED
|