Есть класс матрицы:
template<const std::size_t rows, const std::size_t columns, typename T = int>
class Matrix
{
using type = T;
static constexpr std::size_t m_Columns = columns;
static constexpr std::size_t m_Rows = rows;
std::array<std::array<T, columns>, rows> m_Matrix;
}
Пытаюсь написать функцию умножения на матрицу. Для этого необходимо проверить правильность размерности матрицы и тип её значений. Для начала пытался проверить тип:
template<typename M, typename std::enable_if<std::is_same<T, typename M::type>::value>::type = true>
Но этот код выдаешь ошибку: a non-type template parameter cannot have type
Примерно что хочу увидеть
template<typename M, typename std::enable_if<std::is_same<T, typename M::type>::value>::type = true && столбцы м1 = строкам м2>
Matrix<rows, M::m_Columns, T> MultiplyOnMatrix(const M& matrix)
Как это можно реализовать через шаблоны?