C ++模板typedef

C++ template typedef

我有一节课

1
2
3
4
template<size_t N, size_t M>
class Matrix {
    // ....
};

我想制作一个typedef,它创建一个Vector(列向量),相当于一个大小为n和1的Matrix。就像这样:

1
typedef Matrix<N,1> Vector<N>;

会产生编译错误。以下内容创建了类似的内容,但并不完全符合我的要求:

1
2
3
template <int N>
class Vector: public Matrix<N,1>
{ };

是否有解决方案或不太昂贵的解决方案/最佳实践?


C++ 11添加别名声明,这是EDCOX1(0)的泛化,允许模板:

1
2
template <size_t N>
using Vector = Matrix<N, 1>;

Vector<3>型相当于Matrix<3, 1>型。

在C++ 03中,最接近的近似是:

1
2
3
4
5
template <size_t N>
struct Vector
{
    typedef Matrix<N, 1> type;
};

这里,Vector<3>::type型相当于Matrix<3, 1>