27 #ifndef MLN_VALUE_INTERNAL_VALUE_LIKE_HH
28 # define MLN_VALUE_INTERNAL_VALUE_LIKE_HH
34 # include <mln/core/concept/value.hh>
35 # include <mln/core/internal/force_exact.hh>
55 template <
typename V,
91 template <
typename V,
typename C,
typename N,
typename E>
98 template <
typename V,
typename C,
typename N,
typename E>
102 # ifndef MLN_INCLUDE_ONLY
104 template <
typename V,
typename C,
typename N,
typename E>
112 template <
typename V,
typename C,
typename N,
typename E>
120 template <
typename V,
typename C,
typename N,
typename E>
125 return static_cast<N
>(mln::internal::force_exact<E>(*this));
128 template <
typename V,
typename C,
typename N,
typename E>
130 bool operator==(
const value_like_<V,C,N,E>& lhs,
131 const value_like_<V,C,N,E>&
rhs)
133 return lhs.to_enc() == rhs.to_enc();
136 template <
typename V,
typename C,
typename N,
typename E>
138 bool operator<(const value_like_<V,C,N,E>& lhs,
139 const value_like_<V,C,N,E>&
rhs)
141 return lhs.to_interop() < rhs.to_interop();
144 # endif // ! MLN_INCLUDE_ONLY
153 #endif // ! MLN_VALUE_INTERNAL_VALUE_LIKE_HH