template Iterator Find(const T& value, Iterator first, Iterator last) { using category = typename std::iterator_traits::iterator_category; if constexpr (std::is_same_v) { auto it = std::lower_bound(first, last, value); if (*it == value) {return it;} else {return last;} } else {return std::find(first, last, value);} }