sparse module: makes -= and += operator working

Question 1: why are *=scalar and /=scalar working right away ?
Same weirdness in DynamicSparseMatrix where operators += and -= work wihout
  having to redefine them ???
This commit is contained in:
Gael Guennebaud
2009-01-23 13:59:32 +00:00
parent 899e2ada15
commit e7c48fac9b
6 changed files with 49 additions and 4 deletions

View File

@@ -344,7 +344,7 @@ template<typename OtherDerived>
EIGEN_STRONG_INLINE Derived &
SparseMatrixBase<Derived>::operator-=(const SparseMatrixBase<OtherDerived> &other)
{
return *this = *this - other;
return *this = derived() - other.derived();
}
template<typename Derived>
@@ -360,7 +360,7 @@ template<typename OtherDerived>
EIGEN_STRONG_INLINE Derived &
SparseMatrixBase<Derived>::operator+=(const SparseMatrixBase<OtherDerived>& other)
{
return *this = *this + other;
return *this = derived() + other.derived();
}
template<typename ExpressionType>
@@ -399,7 +399,7 @@ template<typename ExpressionType>
template<typename OtherDerived>
inline ExpressionType& SparseCwise<ExpressionType>::operator*=(const SparseMatrixBase<OtherDerived> &other)
{
return m_matrix.const_cast_derived() = *this * other;
return m_matrix.const_cast_derived() = _expression() * other.derived();
}
// template<typename ExpressionType>