28 has_iterator_traits_difference_type_v<remove_cvref_t<T>>
31 using type =
typename std::iterator_traits<remove_cvref_t<T>>::difference_type;
35 struct iter_difference<
T,
38 !has_iterator_traits_difference_type_v<remove_cvref_t<T>> &&
42 using type = std::ptrdiff_t;
46 struct iter_difference<
T,
49 !has_iterator_traits_difference_type_v<remove_cvref_t<T>> &&
50 !std::is_pointer_v<T> &&
58 struct iter_difference<
T,
61 !has_iterator_traits_difference_type_v<remove_cvref_t<T>> &&
62 !std::is_pointer_v<T> &&
63 !std::is_const_v<T> &&
64 has_iterator_traits_difference_type_v<remove_cvref_t<T>>
67 using type =
typename T::difference_type;
71 struct iter_difference<
T,
74 !has_iterator_traits_difference_type_v<remove_cvref_t<T>> &&
75 !std::is_pointer_v<T> &&
76 !std::is_const_v<T> &&
77 !has_iterator_traits_difference_type_v<remove_cvref_t<T>> &&
78 is_subtractable_v<remove_cvref_t<T>>
81 using type = std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())>;
Definition Partitioner.hpp:146
typename iter_difference< T >::type iter_difference_t
A C++17 type trait equivalent to the C++20 iter_difference concept.
Definition iter_difference.hpp:85
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
A C++17 type trait equivalent to the C++20 iter_difference concept.
Definition iter_difference.hpp:22