// No compila: max_of usa >, y Point no lo tiene. El error aparece al usar el template con Point.
#include <cassert>
#include <cstddef>
#include <vector>

template <typename T>
const T& max_of(const std::vector<T>& items) {
    assert(!items.empty());
    const T* best = &items[0];
    for (std::size_t i = 1; i < items.size(); i++) {
        if (items[i] > *best) {
            best = &items[i];
        }
    }
    return *best;
}

struct Point {
    int x;
    int y;
};

int main() {
    std::vector<Point> points{{1, 2}, {3, 4}};
    max_of(points);
    return 0;
}
