10template <
typename T,
typename U,
typename =
void>
11struct has_find : std::false_type {
14template <
typename T,
typename U>
15struct has_find<T, U, std::void_t<decltype(std::declval<T>().find(std::declval<U>()))>>
19template <
typename T,
typename =
void>
20struct is_iterator : std::false_type {
24struct is_iterator<T, std::void_t<typename std::iterator_traits<T>::iterator_category>>
45template <
typename T,
typename U>
46struct has_find : detail::has_find<T, U>::type {
56template <
class T,
typename U>
Definition algorithm.hpp:12
constexpr bool is_iterator_v
Helper variable template to check if a type is an iterator.
Definition type_traits.hpp:80
constexpr bool always_false_v
Helper variable template for static assertions.
Definition type_traits.hpp:34
Checks if a type has a find method taking a specific type.
Definition type_traits.hpp:46
Checks if a type is an iterator.
Definition type_traits.hpp:68