Add support for mat(all) as an alias to mat.reshaped(mat.size(),fix<1>);

This commit is contained in:
Gael Guennebaud 2017-02-21 13:49:09 +01:00
parent 9081c8f6ea
commit b3fc0007ae
3 changed files with 18 additions and 0 deletions

View File

@ -339,6 +339,8 @@ enum SideType {
OnTheRight = 2
};
/* the following used to be written as:
*
* struct NoChange_t {};

View File

@ -70,4 +70,13 @@ reshaped(NRowsType nRows, NColsType nCols, OrderType) const
derived(), internal::get_runtime_value(nRows), internal::get_runtime_value(nCols));
}
// Views as linear vectors
EIGEN_DEVICE_FUNC
inline const Reshaped<const Derived,SizeAtCompileTime,1>
operator()(const Eigen::internal::all_t&)
{
return Reshaped<const Derived,SizeAtCompileTime,1>(derived(),size(),1);
}
#endif // EIGEN_PARSED_BY_DOXYGEN

View File

@ -73,6 +73,13 @@ void reshape4x4(MatType m)
MatrixXi m28r1 = m.reshaped(2,8,RowOrder);
MatrixXi m28r2 = m.transpose().reshaped(8,2,ColOrder).transpose();
VERIFY_IS_EQUAL( m28r1, m28r2);
using placeholders::all;
VERIFY_IS_EQUAL(m.reshaped(16,1), m(all));
VERIFY_IS_EQUAL(m.reshaped(1,16), m(all).transpose());
VERIFY_IS_EQUAL(m(all).reshaped(2,8), m.reshaped(2,8));
VERIFY_IS_EQUAL(m(all).reshaped(4,4), m.reshaped(4,4));
VERIFY_IS_EQUAL(m(all).reshaped(8,2), m.reshaped(8,2));
}
void test_reshape()