12 #ifndef BOOST_MPL11_COMPARABLE_HPP
13 #define BOOST_MPL11_COMPARABLE_HPP
22 namespace boost {
namespace mpl11 {
24 struct instantiate<Comparable> {
25 template <
typename Left,
typename Right = Left>
27 template <
typename x,
typename y>
28 using equal_impl = not_<not_equal<box<x>, box<y>>>;
30 template <
typename x,
typename y>
31 using not_equal_impl = not_<equal<box<x>, box<y>>>;
43 namespace boost {
namespace mpl11 {
44 template <
typename Left,
typename Right,
typename>
45 struct Comparable : instantiate<Comparable>::template with<Left, Right> {
46 template <
typename x,
typename y>
47 using equal_impl = bool_<detail::std_is_same<x, y>::value>;
49 template <
typename x,
typename y>
50 using not_equal_impl = bool_<!detail::std_is_same<x, y>::value>;
53 template <
typename x1,
typename x2,
typename ...xs>
55 :
and_<equal<x1, x2>, equal<x2, xs...>>
58 template <
typename x,
typename y>
61 typename datatype<typename x::type>::type,
62 typename datatype<typename y::type>::type
63 >::template equal_impl<typename x::type, typename y::type>
66 template <
typename x,
typename y>
69 typename datatype<typename x::type>::type,
70 typename datatype<typename y::type>::type
71 >::template not_equal_impl<typename x::type, typename y::type>
75 #endif // !BOOST_MPL11_COMPARABLE_HPP
Forward declares the Core module.
Returns whether the given objects are unequal.
Definition: comparable.hpp:67
Forwards to boost/mpl11/fwd/integer.hpp.
Returns the result of short-circuit logical and (&&) on its arguments.
Definition: logical.hpp:36
Forward declares logical metafunctions.
Defines the Logical module.
Defines boost::mpl11::detail::std_is_same.
Forward declares the Comparable typeclass.
Returns whether the given objects are equal.
Definition: comparable.hpp:54
Forwards to boost/mpl11/integer.hpp.