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