Не хочу указывать begin/end, а просто контейнер, но не пойму как реализовать враппер, так как max_element возвращает итератор.
const std::vector<int> numbers = { 1, 2, 3 };
// сейчас
std::max_element(numbers.begin(), numbers.end());
// хочу
std::max_element(numbers);
// Откуда взять Iter?
template <typename Iter, typename Container, typename Predicate>
Iter max_element(const Container &c, Predicate p)
{
return std::max_element(std::begin(c), std::end(c), p);
}
PS: предикат обязателен. В примере я его опустил.