From 0104c34b7dc08fa7304625d949379155f74ada37 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 6 May 2009 09:40:41 +0000 Subject: [PATCH] backporting r964165 (gcc 3.3 fixes) --- Eigen/src/Core/Block.h | 2 +- Eigen/src/Core/Part.h | 10 +++++----- test/triangular.cpp | 8 ++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Eigen/src/Core/Block.h b/Eigen/src/Core/Block.h index a7bb48a42..da25b761a 100644 --- a/Eigen/src/Core/Block.h +++ b/Eigen/src/Core/Block.h @@ -222,7 +222,7 @@ class Block class InnerIterator; typedef typename ei_traits::AlignedDerivedType AlignedDerivedType; - friend class Block; + friend class Block; EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block) diff --git a/Eigen/src/Core/Part.h b/Eigen/src/Core/Part.h index d79c2f2ad..9c273f249 100644 --- a/Eigen/src/Core/Part.h +++ b/Eigen/src/Core/Part.h @@ -26,7 +26,7 @@ #ifndef EIGEN_PART_H #define EIGEN_PART_H -/** \nonstableyet +/** \nonstableyet * \class Part * * \brief Expression of a triangular matrix extracted from a given matrix @@ -117,10 +117,10 @@ template class Part const Block col(int i) { return Base::col(i); } const Block col(int i) const { return Base::col(i); } - template + template void swap(const MatrixBase& other) { - Part,Mode>(SwapWrapper(const_cast(m_matrix))).lazyAssign(other.derived()); + Part,Mode>(const_cast(m_matrix)).lazyAssign(other.derived()); } protected: @@ -128,7 +128,7 @@ template class Part const typename MatrixType::Nested m_matrix; }; -/** \nonstableyet +/** \nonstableyet * \returns an expression of a triangular matrix extracted from the current matrix * * The parameter \a Mode can have the following values: \c UpperTriangular, \c StrictlyUpperTriangular, \c UnitUpperTriangular, @@ -280,7 +280,7 @@ void Part::lazyAssign(const Other& other) >::run(m_matrix.const_cast_derived(), other.derived()); } -/** \nonstableyet +/** \nonstableyet * \returns a lvalue pseudo-expression allowing to perform special operations on \c *this. * * The \a Mode parameter can have the following values: \c UpperTriangular, \c StrictlyUpperTriangular, \c LowerTriangular, diff --git a/test/triangular.cpp b/test/triangular.cpp index 7021e0776..a74ca5e0b 100644 --- a/test/triangular.cpp +++ b/test/triangular.cpp @@ -114,6 +114,14 @@ template void triangular(const MatrixType& m) VERIFY((m1.template part() * m2.template part()).isUpperTriangular()); + // test swap + m1.setOnes(); + m2.setZero(); + m2.template part().swap(m1); + m3.setZero(); + m3.template part().setOnes(); + VERIFY_IS_APPROX(m2,m3); + } void test_triangular()