rendered paste body#ifndef MATRIX_H#define MATRIX_Htemplate<int size,typename T>class Matrix{public: typedef T value_type; explicit Matrix(const T &val = T()); Matrix(const Matrix &); template<typename C> Matrix(const Matrix<size,C> &another) { this->assign(another); } void assign(const Matrix &); template<typename C> void assign(const Matrix<size,C> &another) { for(int i=0;i<size;++i) for(int j=0;j<size;++j) m[i][j] = another.m[i][j]; } void fill(const T &val); T &operator()(int row,int column){return m[row][column];} const T &operator()(int row,int column) const {return m[row][column];} Matrix &operator=(const Matrix &another){ this->assign(another); return *this;} template<typename C> Matrix &operator=(const Matrix<size,C> &another){ this->assign(another); return *this;}private: T m[size][size];};template<int size,typename T>Matrix<size,T>::Matrix(const T &val){ this->fill(val);}template<int size,typename T>Matrix<size,T>::Matrix(const Matrix & another){ this->assign(another);}template<int size,typename T>void Matrix<size,T>::fill(const T &val){ for(int i=0;i<size;++i) for(int j=0;j<size;++j) m[i][j] = val;}template<int size,typename T>Matrix<size,T> &Matrix<size,T>::assign(const Matrix &another){ for(int i=0;i<size;++i) for(int j=0;j<size;++j) m[i][j] = another.m[i][j];}#endif // MATRIX_H