Make sure we evaluate into temporaries matching evaluator storage order requirements

This commit is contained in:
Gael Guennebaud 2014-07-19 15:19:10 +02:00
parent 3eba5e1101
commit 62f332fc04
2 changed files with 2 additions and 4 deletions

View File

@ -695,9 +695,8 @@ void call_assignment(const Dst& dst, const Src& src)
template<typename Dst, typename Src, typename Func>
void call_assignment(Dst& dst, const Src& src, const Func& func, typename enable_if<evaluator_traits<Src>::AssumeAliasing==1, void*>::type = 0)
{
#ifdef EIGEN_TEST_EVALUATORS
typename Src::PlainObject tmp(src);
typename plain_matrix_type<Src>::type tmp(src);
#else
typename Src::PlainObject tmp(src.rows(), src.cols());
call_assignment_no_alias(tmp, src, internal::assign_op<typename Dst::Scalar>());

View File

@ -102,10 +102,9 @@ template<typename Derived> class SparseMatrixBase : public EigenBase<Derived>
Transpose<const Derived>
>::type AdjointReturnType;
// FIXME storage order do not match evaluator storage order
typedef SparseMatrix<Scalar, Flags&RowMajorBit ? RowMajor : ColMajor, Index> PlainObject;
#ifndef EIGEN_PARSED_BY_DOXYGEN
/** This is the "real scalar" type; if the \a Scalar type is already real numbers
* (e.g. int, float or double) then \a RealScalar is just the same as \a Scalar. If