]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/icl/type_traits/predicate.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / icl / type_traits / predicate.hpp
1 /*-----------------------------------------------------------------------------+
2 Copyright (c) 2010-2010: Joachim Faulhaber
3 +------------------------------------------------------------------------------+
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENCE.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7 +-----------------------------------------------------------------------------*/
8 #ifndef BOOST_ICL_TYPE_TRAITS_PREDICATE_HPP_JOFA_101102
9 #define BOOST_ICL_TYPE_TRAITS_PREDICATE_HPP_JOFA_101102
10
11 namespace boost{namespace icl
12 {
13 // naming convention
14 // predicate: n-ary predicate
15 // property: unary predicate
16 // relation: binary predicate
17
18 // Unary predicates
19
20 template <class Type>
21 class property
22 {
23 public:
24 typedef Type argument_type;
25 typedef bool result_type;
26 };
27
28 template <class Type>
29 class member_property : public property<Type>
30 {
31 public:
32 member_property( bool(Type::* pred)()const ): property<Type>(), m_pred(pred){}
33 bool operator()(const Type& x)const { return (x.*m_pred)(); }
34 private:
35 bool(Type::* m_pred)()const;
36 } ;
37
38 // Binary predicates: relations
39
40 template <class LeftT, class RightT>
41 class relation
42 {
43 public:
44 typedef LeftT first_argument_type;
45 typedef RightT second_argument_type;
46 typedef bool result_type;
47 };
48
49
50 }} // namespace icl boost
51
52 #endif
53