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));
}

Merge request reports

Loading