I am specializing the \'less\' (predicate) for a data type.
The code looks like this:
template<>
struct std::less
{
bool
The less functor doesn't have to be in std namespace. So
struct A
{
A(int _v=0):v(_v){}
int v;
};
template<> struct less
{
bool operator()(const A& k1, const A& k2) const
{
return k1.v < k2.v;
}
};
std::map m;
m[A(1)] = 1;
m[A(2)] = 2;
Works as expected. (Calls the functor you just created).
I guess you already know, but you can just write your own operator<(k1,k2), which is what default less functor looks for.
bool operator<(const DateTimeKey & k1, const DateTimeKey & k2)
{
//your code...
}