|
Ublas : |
From: christopher diggins (cdiggins_at_[hidden])
Date: 2005-06-02 15:11:26
----- Original Message -----
From: "Michael Stevens" <mail_at_[hidden]>
> I was talking about all operator in general. += and -= can be specialised
> for
> the case where LHS and RHS are of identical type. In this case no aliasing
> can occur. uBLAS already makes this specialisation for operator= in the
> same
> case.
>
> If you are interested have a look at the assignment definitions in the in
> the
> vector class. Of course any such change would need to be propagated to all
> container types.
Looking briefly at the following code:
template<class AE>
BOOST_UBLAS_INLINE
vector &operator += (const vector_expression<AE> &ae) {
// return assign (self_type (*this + ae));
self_type temporary (*this + ae);
return assign_temporary (temporary);
}
it appears to me that simply changing it to:
template<class AE>
BOOST_UBLAS_INLINE
vector &operator += (const self_type& a) {
for (int i=size()-1; i >= 0; --i) {
data_[i] += a.data_[i]
}
}
would do the trick.
-- Christopher Diggins