diff --git a/src/kaleidoscope/MatrixAddr.h b/src/kaleidoscope/MatrixAddr.h index b1a1872b..cd47ab2f 100644 --- a/src/kaleidoscope/MatrixAddr.h +++ b/src/kaleidoscope/MatrixAddr.h @@ -66,8 +66,15 @@ class MatrixAddr { ThisType &operator=(ThisType &&) = default; template + explicit constexpr MatrixAddr(const MatrixAddr__ &other) - : MatrixAddr(other.row(), other.col()) {} + : MatrixAddr(other.row(), other.col()) + { + static_assert(MatrixAddr__::rows <= ThisType::rows, + "Matrix type conversion failed. Source type must not have greater row size than target type"); + static_assert(MatrixAddr__::cols <= ThisType::cols, + "Matrix type conversion failed. Source type must not have greater col size than target type"); + } constexpr uint8_t row() const { return offset_ / cols;