https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120320

--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
or rather:

--- a/matrix.h
+++ b/matrix.h
@@ -1187,7 +1187,9 @@ struct storage_mul<T, S>
 Specialization for DenseMatrix * Matrix or Matrix * DenseMatrix or
SparseMatrix * Matrix or
 Matrix * SparseMatrix. */
 template<Matrix T1, Matrix T2>
-requires(DenseMatrix<T1> || DenseMatrix<T2> || SparseMatrix<T1> ||
SparseMatrix<T2>)
+requires(DenseMatrix<T1> || DenseMatrix<T2>
+         || (!DiagonalMatrix<T1> && !DiagonalMatrix<T2>
+             && (SparseMatrix<T1> || SparseMatrix<T2>)))
 struct storage_mul<T1, T2>
 {
        storage_mul() = delete;

Reply via email to