История изменений
Исправление 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) {
Элегантности здесь нет никакой. Под какой стандарт ты пишешь?