diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-08-15 22:19:29 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-08-15 22:19:29 +0200 |
commit | 239ada95b7680c75f793086eaa35fe7ec1047204 (patch) | |
tree | 88a7f107a3866e1c7f284feb818fbbc2cd22ffa3 /Eigen/src/Core/MatrixBase.h | |
parent | a3e6047c25a4cbc2153974e04fe124c5776a23c0 (diff) |
add overloads of lazyAssign to detect common aliasing issue with
transpose and adjoint
Diffstat (limited to 'Eigen/src/Core/MatrixBase.h')
-rw-r--r-- | Eigen/src/Core/MatrixBase.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index a554de8e3..6ed96e286 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h @@ -457,6 +457,21 @@ template<typename Derived> class MatrixBase void transposeInPlace(); const AdjointReturnType adjoint() const; void adjointInPlace(); + #ifndef EIGEN_NO_DEBUG + template<typename OtherDerived> + Derived& lazyAssign(const Transpose<OtherDerived>& other); + template<typename DerivedA, typename DerivedB> + Derived& lazyAssign(const CwiseBinaryOp<ei_scalar_sum_op<Scalar>,Transpose<DerivedA>,DerivedB>& other); + template<typename DerivedA, typename DerivedB> + Derived& lazyAssign(const CwiseBinaryOp<ei_scalar_sum_op<Scalar>,DerivedA,Transpose<DerivedB> >& other); + + template<typename OtherDerived> + Derived& lazyAssign(const CwiseUnaryOp<ei_scalar_conjugate_op<Scalar>, NestByValue<Eigen::Transpose<OtherDerived> > >& other); + template<typename DerivedA, typename DerivedB> + Derived& lazyAssign(const CwiseBinaryOp<ei_scalar_sum_op<Scalar>,CwiseUnaryOp<ei_scalar_conjugate_op<Scalar>, NestByValue<Eigen::Transpose<DerivedA> > >,DerivedB>& other); + template<typename DerivedA, typename DerivedB> + Derived& lazyAssign(const CwiseBinaryOp<ei_scalar_sum_op<Scalar>,DerivedA,CwiseUnaryOp<ei_scalar_conjugate_op<Scalar>, NestByValue<Eigen::Transpose<DerivedB> > > >& other); + #endif RowXpr row(int i); const RowXpr row(int i) const; |