#pragma once /* template mm::basic_matrix::basic_matrix( const mm::basic_matrix& other ) : data(other.data) {} template mm::basic_matrix::basic_matrix( mm::basic_matrix&& other ) : data(std::forward(other.data)) {}*/ /* member functions */ /*template T& mm::basic_matrix::at(std::size_t row, std::size_t col) { assert(row < Rows); // "out of row bound" assert(col < Cols); // "out of column bound" return data[row * Cols + col]; } template const T& mm::basic_matrix::at(std::size_t row, std::size_t col) const { assert(row < Rows); // "out of row bound" assert(col < Cols); // "out of column bound" return data[row * Cols + col]; } template auto mm::basic_matrix::operator[](std::size_t index) { if constexpr (is_row_vec() || is_col_vec()) { return data.at(index); } else { return mm::row_iterator(*this, static_cast(index)); //return row_vec( // data.cbegin() + (index * Cols), // data.cbegin() + ((index + 1) * Cols) + 1 ); } }*/ /*template mm::basic_matrix mm::basic_matrix::transposed() const { mm::basic_matrix result; for (unsigned row = 0; row < M; row++) for (unsigned col = 0; col < N; col++) result.at(col, row) = this->at(row, col); return result; }*/