これは、テンプレートの特殊化または条件式に続く考え方で発生しましたか? .
私は私のプロジェクトでテンプレートの特殊化を使用しており、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> {...};
私の質問は次のとおりです。この場合、専門化の利点は何ですか? 明らかに、3 つの特殊化に共通するコードはありません。そのため、一般的なテンプレートを切り取って次のように宣言してはいかがでしょうか。
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> {...};
?