Мой профессор был очень непреклонен в том, что интерфейсные классы не могут быть шаблонизированы. В частности, классы с чисто виртуальными функциями не могут иметь шаблонных параметров. Более того, он сказал, что вы не можете создавать виртуальные операторы.
Это был пример, который он демонстрировал нам в то время.
template <typename T>
class Array {
public:
virtual void fill(T t) = 0;
virtual T& operator[](size_t i) const = 0;
// ...
};
Нет ничего плохого в этом коде, верно? Был ли когда-нибудь в истории C ++ момент, когда это не скомпилировалось бы? Я использовал эту точную форму кода в назначении, и она отлично работает.