#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; }