这发生在模板专业化或条件表达式之后的思路中?.
我在我的一个项目中使用模板专业化,并从 Stroustrup 遇到了这个例子:Matrix.h,他在其中声明了一个 MatrixBase 模板类
template<class T> class Matrix_base
用于公共元素和 Matrix 模板类
template<class T = double, int D = 1> class Matrix
作为专业的“道具”(无论是什么)。他将构造函数声明为私有的,因此只能实例化特化。声明如下:
template<class T> class Matrix<T,1> : public Matrix_base<T> {...};
template<class T> class Matrix<T,2> : public Matrix_base<T> {...};
template<class T> class Matrix<T,3> : public Matrix_base<T> {...};
我的问题是:在这种情况下,专业化的优势是什么?显然这三个专业没有共同的代码,所以为什么不剪掉通用模板并声明:
template<class T> class Matrix_1<T> : public Matrix_base<T> {...};
template<class T> class Matrix_2<T> : public Matrix_base<T> {...};
template<class T> class Matrix_3<T> : public Matrix_base<T> {...};
?