I am specializing the \'less\' (predicate) for a data type.
The code looks like this:
template<>
struct std::less
{
bool
Why are you even doing this?
std::less exists for two purposes only:
There's no reason for a user to overload it - either overload operator< or use a custom comparator function.
There are std algorithms that can be sensibly specialized - std::swap is a good example - and to do so you do need to declare the specialization inside namespace std.