模板 class 可以有纯虚函数和虚运算符吗?

Can a template class have pure virtual functions and virtual operators?

我的教授非常坚持界面 类 不能模板化。具体来说,类 with pure virtual functions 不能有模板参数。更进一步,他说你不能做虚拟运营商。

这是他当时给我们看的例子。

template <typename T>
class Array {
public:
  virtual void fill(T t) = 0;
  virtual T& operator[](size_t i) const = 0;
  // ... 
};

这段代码没有问题吧?在 C++ 历史上是否有过无法编译的情况?我在作业中使用了这种确切形式的代码,并且效果很好。

Can a template class have pure virtual functions and virtual operators?

是的。

There's nothing wrong with this code right?

没错。

Has there ever been a point in C++ history where this wouldn't compile?

可能吧。我不能肯定地说它可以用原来的 Cfront 转译器编译。

但是,它在任何标准 C++ 版本中都是良构的。