История изменений
Исправление Siborgium, (текущая версия) :
Версия - какая скачается и запустится на Qt, сейчас c++2a.
Можно писать в 2-4 раза короче, раз есть с++2а.
Кроме того, можно как-то так
template <typename T> inline constexpr bool is_tuple_v = false;
template <typename ... Ts> inline constexpr bool is_tuple_v<std::tuple<Ts...>> = true;
template <typename F, typename ... Args>
concept returns_tuple = is_tuple_v<std::invoke_result_t<F, Args...>>;
void sort(returns_tuple auto && fields) {
return sort([=](auto && a, auto && b) { return fields(a) < fields(b); });
}
void sort(auto && compare) {
if (p_count > 1) std::sort(buf, buf + p_count, compare);
}
Исходная версия Siborgium, :
Версия - какая скачается и запустится на Qt, сейчас c++2a.
Можно писать в 2-4 раза короче, раз есть с++2а.
Кроме того, можно
template <typename T> inline constexpr bool is_tuple_v = false;
template <typename ... Ts> inline constexpr bool is_tuple_v<std::tuple<Ts...>> = true;
template <typename F, typename ... Args>
concept returns_tuple = is_tuple_v<std::invoke_result_t<F, Args...>>;
void sort(returns_tuple auto && fields) {
return sort([=](auto && a, auto && b) { return fields(a) < fields(b); });
}
void sort(auto && compare) {
if (p_count > 1) std::sort(buf, buf + p_count, compare);
}