LINUX.ORG.RU

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

Исправление 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);
}