Re: [eigen] Forcing a conversion to ColMajor

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


On Sat, Jul 28, 2012 at 2:52 AM, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> wrote:
> Hi,
>
> you could do something like:
>
> typename Eigen::internal::conditional<T::IsRowMajor,
>   Eigen::Matrix<typename T::Scalar,
> T::RowsAtCompileTime,T::ColsAtCompileTime,ColMajor>,
>   const T&>::type objCopy(obj);
>
> and then use objCopy instead. If T is column major, then objCopy will
> just be an alias (const ref).

Thanks for the suggestion.  That version fails with an
INVALID_MATRIX_TEMPLATE_PARAMETERS error when trying to do the objCopy
on a row-major object.

../include/Eigen/src/Core/Matrix.h:280:13: note: in instantiation of
member function
'Eigen::PlainObjectBase<Eigen::Matrix<std::complex<double>, 1, -1, 0,
1, -1> >::_check_template_params' requested here
      Base::_check_template_params();
            ^
../include/RcppEigenWrap.h:89:31: note: in instantiation of function
template specialization 'Eigen::Matrix<std::complex<double>, 1, -1, 0,
1, -1>::Matrix<Eigen::Matrix<std::complex<double>, 1, -1, 1, 1, -1> >'
requested here
              const T&>::type objCopy(obj);

I think this is triggered by an object of the form

Eigen::RowVectorXcd::Zero(5)

and my guess is that the condition failing is

EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1,
(Options&RowMajor)==RowMajor)



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/