make_sorted_pair, for any aggregate with 2 members

This commit is contained in:
Laurent Rineau 2024-04-10 10:24:11 +02:00
parent f4422ce0b4
commit d02457a9a5
1 changed files with 7 additions and 15 deletions

View File

@ -295,22 +295,8 @@ struct Default_using_type
};
};
template <class T_ = Default_using_type>
struct less_cpp14
{
template <class T1, class T2>
bool operator() (T1&& t1, T2&& t2) const
{
typedef typename Default_using_type::Get<
T_,
typename std::common_type<typename std::decay<T1>::type,
typename std::decay<T2>::type> >::type T;
return std::less<T>()(t1,t2);
}
};
template <class T = Default_using_type,
class Compare = less_cpp14<T>,
class Compare = std::less<>,
class T1, class T2,
class A = typename Default_using_type::Get<T,
typename std::common_type<
@ -323,6 +309,12 @@ inline P make_sorted_pair(T1&& t1, T2&& t2, Compare comp = Compare())
: P(std::forward<T2>(t2), std::forward<T1>(t1));
}
template <class Pair>
auto make_sorted_pair(Pair&& pair) {
auto&& [a, b] = std::forward<Pair>(pair);
return make_sorted_pair(std::forward<decltype(a)>(a), std::forward<decltype(b)>(b));
}
} //namespace CGAL
namespace std {