27 template <
class T>
class comparable {};
29 template <
class T>
bool operator>(
const comparable<T> &a,
const comparable<T> &b) {
30 return static_cast<const T&
>(b) < static_cast<const T&>(a);
33 template <
class T>
bool operator<=(const comparable<T> &a,
const comparable<T> &b) {
34 return !(
static_cast<const T&
>(a) > static_cast<const T&>(b));
37 template <
class T>
bool operator>=(
const comparable<T> &a,
const comparable<T> &b) {
38 return !(
static_cast<const T&
>(a) < static_cast<const T&>(b));
41 template <
class T>
bool operator!=(
const comparable<T> &a,
const comparable<T> &b) {
42 return !(
static_cast<const T&
>(a) == static_cast<const T&>(b));
49 #endif // COMPARABLE_HPP