Make use of is_same_dense helper instead of extract_data to detect input/outputs are the same.

This commit is contained in:
Gael Guennebaud
2016-04-13 18:47:12 +02:00
parent b7716c0328
commit 6f960b83ff
4 changed files with 4 additions and 9 deletions

View File

@@ -532,8 +532,7 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularViewImpl<_Mat
template<typename RhsType, typename DstType>
EIGEN_DEVICE_FUNC
EIGEN_STRONG_INLINE void _solve_impl(const RhsType &rhs, DstType &dst) const {
const typename DstType::Scalar *dst_data = internal::extract_data(dst);
if(!(internal::is_same<RhsType,DstType>::value && dst_data!=0 && dst_data == internal::extract_data(rhs)))
if(!internal::is_same_dense(dst,rhs))
dst = rhs;
this->solveInPlace(dst);
}