我想写一个数学矢量模板。我有一个接受类型和大小作为模板参数的类,有很多数学运算方法。现在我想编写特化,其中 Vector<3> 例如具有 x、y、z 作为成员,它们分别引用 data[0..3]。
问题是我不知道如何创建一个从默认模板继承所有内容的专业化,而无需创建基类或两次编写所有内容。
最有效的方法是什么?
template<class Type, size_t Size>
class Vector {
// stuff
};
template<class T>
class Vector<3,T>: public Vector {
public:
T &x, &y, &z;
Vector(): Vector<>(), x(data[0]), y(data[1]), z(data[2]){}
// and so on
};