diff options
Diffstat (limited to 'boost/move/algo/predicate.hpp')
-rw-r--r-- | boost/move/algo/predicate.hpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/boost/move/algo/predicate.hpp b/boost/move/algo/predicate.hpp new file mode 100644 index 0000000000..0287d66318 --- /dev/null +++ b/boost/move/algo/predicate.hpp @@ -0,0 +1,86 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2015-2016. +// 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/move for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#ifndef BOOST_MOVE_ALGO_PREDICATE_HPP +#define BOOST_MOVE_ALGO_PREDICATE_HPP + +#include <boost/move/algo/move.hpp> +#include <boost/move/adl_move_swap.hpp> +#include <boost/move/algo/detail/basic_op.hpp> +#include <boost/move/detail/iterator_traits.hpp> +#include <boost/move/detail/destruct_n.hpp> +#include <boost/assert.hpp> + +namespace boost { +namespace movelib { + +template<class Comp> +struct antistable +{ + explicit antistable(Comp &comp) + : m_comp(comp) + {} + + template<class U, class V> + bool operator()(const U &u, const V & v) + { return !m_comp(v, u); } + + private: + antistable & operator=(const antistable &); + Comp &m_comp; +}; + +template <class Comp> +class negate +{ + public: + negate() + {} + + explicit negate(Comp comp) + : m_comp(comp) + {} + + template <class T1, class T2> + bool operator()(const T1& l, const T2& r) + { + return !m_comp(l, r); + } + + private: + Comp m_comp; +}; + + +template <class Comp> +class inverse +{ + public: + inverse() + {} + + explicit inverse(Comp comp) + : m_comp(comp) + {} + + template <class T1, class T2> + bool operator()(const T1& l, const T2& r) + { + return m_comp(r, l); + } + + private: + Comp m_comp; +}; + +} //namespace movelib { +} //namespace boost { + +#endif //#define BOOST_MOVE_ALGO_PREDICATE_HPP |