From f62a0f69c638b962082fea11bb143e92aa01f3d9 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 8 Nov 2018 18:40:22 +0100 Subject: [PATCH] Fix max-size in indexed-view --- Eigen/src/Core/IndexedView.h | 4 ++-- test/indexed_view.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Core/IndexedView.h b/Eigen/src/Core/IndexedView.h index 8c57a277c..3485d8f46 100644 --- a/Eigen/src/Core/IndexedView.h +++ b/Eigen/src/Core/IndexedView.h @@ -21,8 +21,8 @@ struct traits > enum { RowsAtCompileTime = int(array_size::value), ColsAtCompileTime = int(array_size::value), - MaxRowsAtCompileTime = RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime) : int(traits::MaxRowsAtCompileTime), - MaxColsAtCompileTime = ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime) : int(traits::MaxColsAtCompileTime), + MaxRowsAtCompileTime = RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime) : Dynamic, + MaxColsAtCompileTime = ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime) : Dynamic, XprTypeIsRowMajor = (int(traits::Flags)&RowMajorBit) != 0, IsRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1 diff --git a/test/indexed_view.cpp b/test/indexed_view.cpp index 8ede612d1..6518642df 100644 --- a/test/indexed_view.cpp +++ b/test/indexed_view.cpp @@ -408,6 +408,13 @@ void check_indexed_view() VERIFY_IS_EQUAL( A(i,i), A.coeff(i_sizet, i_short) ); VERIFY_IS_EQUAL( A(i,i), A.coeff(5, i_sizet) ); + // Regression test for Max{Rows,Cols}AtCompileTime + { + Matrix3i A3 = Matrix3i::Random(); + ArrayXi ind(5); ind << 1,1,1,1,1; + VERIFY_IS_EQUAL( A3(ind,ind).eval(), MatrixXi::Constant(5,5,A3(1,1)) ); + } + } EIGEN_DECLARE_TEST(indexed_view)