Newer
Older
/*
* compare.hpp
*
* Created on: Apr 1, 2013
* Author: Jan Travnicek
*/
template < typename T, typename Enable = void >
template<>
struct compare<bool> {
int operator()(bool first, bool second) const {
return first - second;
}
};
template<>
struct compare<char> {
int operator()(char first, char second) const {
return first - second;
}
};
template<>
struct compare<short> {
int operator()(short first, short second) const {
return first - second;
}
};
template<>
struct compare<unsigned> {
int operator()(unsigned first, unsigned second) const {
return first - second;
}
};
template<>
struct compare<int> {
int operator()(int first, int second) const {
return first - second;
}
};
template<>
struct compare<long> {
int operator()(long first, long second) const {
if ( first < second )
return -1;
else if ( first > second )
return 1;
else
return 0;
}
};
template<>
struct compare<long long> {
int operator()(long long first, long long second) const {
if ( first < second )
return -1;
else if ( first > second )
return 1;
else
return 0;
}
};
template<>
struct compare<double> {
int operator()(double first, double second) const {
if ( first < second )
return -1;
else if ( first > second )
return 1;
else
return 0;
template<class T>
struct compare<T*> {
int operator()( T * const & first, T * const & second) const {
static compare<typename std::decay < T >::type > comp;
template<class T>
struct compare<T&> {
int operator()( const T & first, const T & second) const {
static compare<typename std::decay < T >::type > comp;
return comp(first, second);
}
};