implement strict weak ordering (return false for equality) to avoid run time error in std::sort