Make assignment from general EigenBase object call evaluator, and support dense X= sparse

This commit is contained in:
Gael Guennebaud
2014-08-01 16:23:30 +02:00
parent 2a3c3c49a1
commit c2ff44cbf3
2 changed files with 33 additions and 4 deletions

View File

@@ -121,7 +121,11 @@ template<typename Derived>
template<typename OtherDerived>
Derived& DenseBase<Derived>::operator=(const EigenBase<OtherDerived> &other)
{
#ifndef EIGEN_TEST_EVALUATORS
other.derived().evalTo(derived());
#else
call_assignment(derived(), other.derived());
#endif
return derived();
}
@@ -129,7 +133,11 @@ template<typename Derived>
template<typename OtherDerived>
Derived& DenseBase<Derived>::operator+=(const EigenBase<OtherDerived> &other)
{
#ifndef EIGEN_TEST_EVALUATORS
other.derived().addTo(derived());
#else
call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar>());
#endif
return derived();
}
@@ -137,7 +145,11 @@ template<typename Derived>
template<typename OtherDerived>
Derived& DenseBase<Derived>::operator-=(const EigenBase<OtherDerived> &other)
{
#ifndef EIGEN_TEST_EVALUATORS
other.derived().subTo(derived());
#else
call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar>());
#endif
return derived();
}