#pragma once #include template Iterator Find(const T &value, Iterator first, Iterator last) { using category = typename std::iterator_traits::iterator_category; if (std::is_same()) { Iterator tmp = std::lower_bound(first, last, value); if (*tmp == value) { return tmp; } } else { for (auto v = first; v != last; ++v) { if (*v == value) { return v; } } } return last; }