Задать вопрос
@iihaarr

Как сравнить 2 класса с разными шаблонными параметрами?

Есть класс матрицы:
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)

Как это можно реализовать через шаблоны?
  • Вопрос задан
  • 109 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
А не проще ли так?
template <const std::size_t other_columns>
 Matrix<rows, other_columns, T> MultiplyOnMatrix(const Matrix<columns, other_columns, T>& matrix)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы