skip aliasing checks where not necessary

This commit is contained in:
conrad
2024-06-30 13:05:02 +10:00
parent 935a500e75
commit 6e6657e2f0
+13 -2
View File
@@ -3361,11 +3361,22 @@ template<typename eT>
template<typename T1>
inline
void
subview_col<eT>::operator=(const Base<eT,T1>& X)
subview_col<eT>::operator=(const Base<eT,T1>& expr)
{
arma_debug_sigprint();
subview<eT>::operator=(X);
if( (is_Mat<T1>::value || is_Mat<typename Proxy<T1>::stored_type>::value) && (Proxy<T1>::has_subview == false) && (quasi_unwrap<T1>::has_subview == false) )
{
const quasi_unwrap<T1> U(expr.get_ref());
arma_conform_assert_same_size(subview<eT>::n_rows, uword(1), U.M.n_rows, U.M.n_cols, "copy into submatrix");
arrayops::copy(const_cast<eT*>(colmem), U.M.memptr(), subview<eT>::n_rows);
}
else
{
subview<eT>::operator=(expr);
}
}