Когда мы предоставляем функцию сравнения для std::sort, мы используем следующую перегрузку:
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
в котором функция сравнения для std::sort должна иметь следующий синтаксис:
bool cmp(const Type1 &a, const Type2 &b);
Но, как вы можете видеть, a и b могут иметь разные типы. cppreference говорит:
Типы
Type1иType2должны быть такими, чтобы объект типаRandomItмог быть разыменован, а затем неявно преобразован в оба из них.
Но я до сих пор не могу точно понять, как мы можем иметь 2 разных типа в одном массиве, когда мы пытаемся отсортировать его.
Может ли кто-нибудь предоставить небольшой пример с разными типами для функции сравнения std::sort?