diff --git a/include/experimental/__p1673_bits/blas3_matrix_product.hpp b/include/experimental/__p1673_bits/blas3_matrix_product.hpp index 4cff48e4..cb5c9795 100644 --- a/include/experimental/__p1673_bits/blas3_matrix_product.hpp +++ b/include/experimental/__p1673_bits/blas3_matrix_product.hpp @@ -368,6 +368,23 @@ constexpr bool extractConj(in_matrix_t A) template struct is_custom_matrix_product_avail : std::false_type {}; +template +struct is_custom_matrix_product_avail< + Exec, A_t, B_t, C_t, + std::enable_if_t< + std::is_void_v< + decltype( + matrix_product + (std::declval(), + std::declval(), + std::declval(), + std::declval())) + > + && !linalg::impl::is_inline_exec_v + > + > + : std::true_type{}; + template struct is_custom_matrix_product_with_update_avail : std::false_type {}; @@ -2089,36 +2106,6 @@ void hermitian_matrix_right_product( hermitian_matrix_right_product(std::experimental::linalg::impl::default_exec_t(), A, t, B, E, C); } -template -struct is_custom_matrix_product_avail< - Exec, A_t, B_t, C_t, - std::enable_if_t< - std::is_void_v< - decltype( - matrix_product( - std::declval(), - std::declval(), - std::declval(), - std::declval())) - > - && !std::is_same_v< // see #218 - decltype( - std::experimental::linalg::matrix_product( - std::declval(), - std::declval(), - std::declval(), - std::declval())), - decltype( - matrix_product( - std::declval(), - std::declval(), - std::declval(), - std::declval())) - > - && !linalg::impl::is_inline_exec_v - > - > - : std::true_type{}; } // end namespace linalg } // end inline namespace __p1673_version_0