The Set<T> and Map<T, V> types will report nice static_assert errors to students if T is not a comparable type. However, the relative comparison operators between Vector<T>, which can only operate if T is comparable, do not trigger these sorts of static_asserts. There is a lovely and helpful message at the spot in the template code where instantiation fails, but it can easily be missed by students in a wall of template errors when that happens.