#ifndef MATRIX_H #define MATRIX_H template class Matrix { public: typedef T value_type; explicit Matrix(const T &val = T()); Matrix(const Matrix &); template Matrix(const Matrix &another) { this->assign(another); } void assign(const Matrix &); template void assign(const Matrix &another) { for(int i=0;iassign(another); return *this;} template Matrix &operator=(const Matrix &another){ this->assign(another); return *this;} private: T m[size][size]; }; template Matrix::Matrix(const T &val) { this->fill(val); } template Matrix::Matrix(const Matrix & another) { this->assign(another); } template void Matrix::fill(const T &val) { for(int i=0;i Matrix &Matrix::assign(const Matrix &another) { for(int i=0;i