#include <map>
#include <functional>

template <typename T>
	static bool indirectLess(const T* a, const T* b)
{
	if (a==b) 
		return false;
	if (!a)
		return true;
	if (!b)
		return false;
	return std::less<T>()(*a, *b);
}

typedef int T;
typedef int V;

int main()
{
	typedef bool (*cmp_t)(const T*, const T*);

	std::map<T*,V,cmp_t> tsMap(&indirectLess<T>);
}

