17#ifndef RANGES_V3_COMPARE_HPP
18#define RANGES_V3_COMPARE_HPP
20#if __cplusplus > 201703L && __has_include(<compare>) && \
21 defined(__cpp_concepts) && defined(__cpp_impl_three_way_comparison)
28 template<
typename... Ts>
29 struct common_comparison_category
34 template<
typename... Ts>
35 requires ((std::is_same_v<Ts, std::partial_ordering> ||
36 std::is_same_v<Ts, std::weak_ordering> ||
37 std::is_same_v<Ts, std::strong_ordering>) && ...)
38 struct common_comparison_category<Ts...> : std::common_type<Ts...>
41 template<
typename... Ts>
42 using common_comparison_category_t =
typename common_comparison_category<Ts...>::type;