namespace LinAl {
/**
-A general mathematical matrix.
+A general mathematical matrix with M rows and N columns.
*/
template<typename T, unsigned M, unsigned N>
class Matrix
template<typename T, unsigned M, unsigned N>
template<typename U>
-inline Matrix<T, M, N>::Matrix(const Matrix<U, M, N> &m)
+inline Matrix<T, M, N>::Matrix(const Matrix<U, M, N> &other)
{
- std::copy(m.data, m.data+M*N, data);
+ for(unsigned i=0; i<M; ++i)
+ for(unsigned j=0; j<N; ++j)
+ element(i, j) = other(i, j);
}
template<typename T, unsigned M, unsigned N>
template<typename T, unsigned M, unsigned N>
inline Matrix<T, M, N> &Matrix<T, M, N>::exchange_rows(unsigned i, unsigned j)
{
+ using std::swap;
for(unsigned k=0; k<N; ++k)
- std::swap(element(i, k), element(j, k));
+ swap(element(i, k), element(j, k));
return *this;
}