From 6e6657e2f0a89cf5cc97bc6c85f57f2df71239db Mon Sep 17 00:00:00 2001 From: conrad Date: Sun, 30 Jun 2024 13:05:02 +1000 Subject: [PATCH] skip aliasing checks where not necessary --- include/armadillo_bits/subview_meat.hpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/include/armadillo_bits/subview_meat.hpp b/include/armadillo_bits/subview_meat.hpp index b990b01d..44014046 100644 --- a/include/armadillo_bits/subview_meat.hpp +++ b/include/armadillo_bits/subview_meat.hpp @@ -3361,11 +3361,22 @@ template template inline void -subview_col::operator=(const Base& X) +subview_col::operator=(const Base& expr) { arma_debug_sigprint(); - subview::operator=(X); + if( (is_Mat::value || is_Mat::stored_type>::value) && (Proxy::has_subview == false) && (quasi_unwrap::has_subview == false) ) + { + const quasi_unwrap U(expr.get_ref()); + + arma_conform_assert_same_size(subview::n_rows, uword(1), U.M.n_rows, U.M.n_cols, "copy into submatrix"); + + arrayops::copy(const_cast(colmem), U.M.memptr(), subview::n_rows); + } + else + { + subview::operator=(expr); + } }