Можно ли перегружать базовые типы в С++?
Нет, нельзя. В вашем случае можно написать свой компаратор и передать его шаблонным параметром в ваше дерево.
Если оно не поддерживает кастомных компараторов, добавьте поддержку, это очень полезно.
Немного расширю ответ MiiNiPaa.
Добавить поддержку шаблонных компараторов можно таким образом:template< typename item_t, template< typename > class item_traits >
class item_processor{
private:
	typedef item_traits<item_t> traits_t;
	...
};
Изюмина во втором параметре шаблона - это шаблонный параметр шаблона. :)
У Девида Вандервуда по этому поводу было даже так написано: "Поскольку параметр шаблонного параметра шаблона не используется, его имя можно опустить".
Такая запись говорит о том, что при инстанцировании или специализации шаблона в его объявлении ожидается только имя шаблона, а не его инстанцирование.
Используется это дело вот так:template< typename target_t >
class traits_less;

...

item_processor<char, traits_less> char_processor;
Все компараторы STL имеют один параметр шаблона. Таким образом, их использование тоже становится допустимо в качестве параметра для item_processor. В то же время, и свой компаратор в такую систему добавить проблемы не составит.