diff --git a/include/etl/adapters/diagonal.hpp b/include/etl/adapters/diagonal.hpp index 07fea0e2..2e308e25 100644 --- a/include/etl/adapters/diagonal.hpp +++ b/include/etl/adapters/diagonal.hpp @@ -114,8 +114,8 @@ struct diagonal_matrix final : adapter, iterable - diagonal_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + diagonal_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is diagonal if (!is_diagonal(e)) { throw diagonal_exception(); diff --git a/include/etl/adapters/hermitian.hpp b/include/etl/adapters/hermitian.hpp index 9fe958f8..f08bf089 100644 --- a/include/etl/adapters/hermitian.hpp +++ b/include/etl/adapters/hermitian.hpp @@ -138,8 +138,8 @@ struct hermitian_matrix final : adapter, iterable - hermitian_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + hermitian_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is hermitian if (!is_hermitian(e)) { throw hermitian_exception(); diff --git a/include/etl/adapters/lower.hpp b/include/etl/adapters/lower.hpp index 9eda147e..e8f1df94 100644 --- a/include/etl/adapters/lower.hpp +++ b/include/etl/adapters/lower.hpp @@ -114,8 +114,8 @@ struct lower_matrix final : adapter, iterable * \param e The ETL expression to get the values from * \return a reference to the fast matrix */ - template - lower_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + lower_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is lower triangular if (!is_lower_triangular(e)) { throw lower_exception(); diff --git a/include/etl/adapters/strictly_lower.hpp b/include/etl/adapters/strictly_lower.hpp index 5dd8451d..0d2d6455 100644 --- a/include/etl/adapters/strictly_lower.hpp +++ b/include/etl/adapters/strictly_lower.hpp @@ -115,8 +115,8 @@ struct strictly_lower_matrix final : adapter, iterable - strictly_lower_matrix& operator=(E&& e) noexcept(false) requires convertible_expr{ + template E> + strictly_lower_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is strictly lower triangular if (!is_strictly_lower_triangular(e)) { throw strictly_lower_exception(); diff --git a/include/etl/adapters/strictly_upper.hpp b/include/etl/adapters/strictly_upper.hpp index 375bdb64..8e4a1c89 100644 --- a/include/etl/adapters/strictly_upper.hpp +++ b/include/etl/adapters/strictly_upper.hpp @@ -114,8 +114,8 @@ struct strictly_upper_matrix final : adapter, iterable - strictly_upper_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + strictly_upper_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is strictly upper triangular if (!is_strictly_upper_triangular(e)) { throw strictly_upper_exception(); diff --git a/include/etl/adapters/symmetric.hpp b/include/etl/adapters/symmetric.hpp index d6352a43..bda47f81 100644 --- a/include/etl/adapters/symmetric.hpp +++ b/include/etl/adapters/symmetric.hpp @@ -138,8 +138,8 @@ struct symmetric_matrix final : adapter, iterable - symmetric_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + symmetric_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is symmetric if (!is_symmetric(e)) { throw symmetric_exception(); diff --git a/include/etl/adapters/uni_upper.hpp b/include/etl/adapters/uni_upper.hpp index 9915c187..c67ac39b 100644 --- a/include/etl/adapters/uni_upper.hpp +++ b/include/etl/adapters/uni_upper.hpp @@ -109,8 +109,8 @@ struct uni_upper_matrix final : adapter, iterable - uni_upper_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + uni_upper_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is uni upper triangular if (!is_uni_upper_triangular(e)) { throw uni_upper_exception(); diff --git a/include/etl/adapters/upper.hpp b/include/etl/adapters/upper.hpp index 255d6756..c4ec2a4c 100644 --- a/include/etl/adapters/upper.hpp +++ b/include/etl/adapters/upper.hpp @@ -114,8 +114,8 @@ struct upper_matrix final : adapter, iterable * \param e The ETL expression to get the values from * \return a reference to the fast matrix */ - template - upper_matrix& operator=(E&& e) noexcept(false) requires convertible_expr { + template E> + upper_matrix& operator=(E&& e) noexcept(false) { // Make sure the other matrix is upper triangular if (!is_upper_triangular(e)) { throw upper_exception(); diff --git a/include/etl/concepts.hpp b/include/etl/concepts.hpp index 80dc85a0..cfb2b5ca 100644 --- a/include/etl/concepts.hpp +++ b/include/etl/concepts.hpp @@ -117,7 +117,7 @@ concept matrix = etl_expr && decay_traits::dimensions() > 1; template concept fast_matrix_c = fast && matrix; -template +template concept same_dimensions = etl_expr && decay_traits::dimensions() == decay_traits::dimensions(); template