1*67e74705SXin Li template<class Element> struct TMatrixT; 2*67e74705SXin Li typedef TMatrixT<double> TMatrixD; 3*67e74705SXin Li 4*67e74705SXin Li void f(const TMatrixD &m); 5*67e74705SXin Li 6*67e74705SXin Li template<class Element> struct TMatrixT { 7*67e74705SXin Li template <class Element2> TMatrixT(const TMatrixT<Element2> &); ~TMatrixTTMatrixT8*67e74705SXin Li ~TMatrixT() {} DeterminantTMatrixT9*67e74705SXin Li void Determinant () { f(*this); } 10*67e74705SXin Li }; 11*67e74705SXin Li 12*67e74705SXin Li template struct TMatrixT<float>; 13*67e74705SXin Li template struct TMatrixT<double>; 14