Fix max-size in indexed-view

This commit is contained in:
Gael Guennebaud 2018-11-08 18:40:22 +01:00
parent bf495859ff
commit f62a0f69c6
2 changed files with 9 additions and 2 deletions

View File

@ -21,8 +21,8 @@ struct traits<IndexedView<XprType, RowIndices, ColIndices> >
enum {
RowsAtCompileTime = int(array_size<RowIndices>::value),
ColsAtCompileTime = int(array_size<ColIndices>::value),
MaxRowsAtCompileTime = RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime) : int(traits<XprType>::MaxRowsAtCompileTime),
MaxColsAtCompileTime = ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime) : int(traits<XprType>::MaxColsAtCompileTime),
MaxRowsAtCompileTime = RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime) : Dynamic,
MaxColsAtCompileTime = ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime) : Dynamic,
XprTypeIsRowMajor = (int(traits<XprType>::Flags)&RowMajorBit) != 0,
IsRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1

View File

@ -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)