Use compare function instead of operator<
Addresses compilation errors when using custom structure.
In SequentialPartition operators < and > are used instead of comparison function. When a user passes a custom structure without these operators, it even fails to compile, for example:
#include <cassert>
#include <random>
#include <vector>
#include <tuple>
#include "cpp11sort.h"
struct elem_t {
int a;
int b;
};
int main()
{
long n = 1'000'000;
std::vector<elem_t> v;
std::mt19937 eng(std::random_device{}());
std::uniform_int_distribution<int> dist;
while (n--)
v.push_back({dist(eng), dist(eng)});
auto custom_compare = [](const auto& lhs, const auto& rhs) {
return lhs.a < rhs.a;
};
cpp11sort::sort(v.begin(), v.end(), custom_compare);
assert(std::is_sorted(v.begin(), v.end(), custom_compare));
}