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)
24 #include <type_traits>
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;
CPP_concept type
\concept type
Definition: concepts.hpp:838