LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

void sort(const function<bool(const T& v1, const T& v2)> &compare) {

замени на

template <typename F>
void sort(F&& compare) {

С второй версией аналогично. Причины использовать здесь std::function нет. Элегантности здесь нет никакой. Под какой стандарт ты пишешь?

В чем смысл мучаться с туплом, я так и не понял. Пиши версию с обычным предикатом. Если юзеру нужно, для хранимого типа данных будет написан свой fields, и твой sort будет использоваться как-то так

sort([=](auto && a, auto && b) { return fields(a) < fields(b); });

Исправление Siborgium, :

void sort(const function<bool(const T& v1, const T& v2)> &compare) {

замени на

template <typename F>
void sort(F&& compare) {

С второй версией аналогично. Причины использовать здесь std::function нет. Элегантности здесь нет никакой. Под какой стандарт ты пишешь?

В чем смысл мучаться с туплом, я так и не понял. Пиши версию с обычным предикатом, отдельно можешь написать свой fields и писать

sort([=](auto && a, auto && b) { return fields(a) < fields(b); });

Исправление Siborgium, :

void sort(const function<bool(const T& v1, const T& v2)> &compare) {

замени на

template <typename F>
void sort(F&& compare) {

С второй версией аналогично. Причины использовать здесь std::function нет. Элегантности здесь нет никакой. Под какой стандарт ты пишешь?

Исходная версия Siborgium, :

void sort(const function<bool(const T& v1, const T& v2)> &compare) {

замени на

template <typename F>
void sort(F&& compare) {

Элегантности здесь нет никакой. Под какой стандарт ты пишешь?