0

我想知道为什么这不适用于 Eigen:

MatrixXd A = MatrixXd::Random(3, 10);
Array<double, 1, Dynamic> x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = x.matrix() * A.transpose();

虽然这有效:

MatrixXd A = MatrixXd::Random(3, 10);
Array<double, 1, Dynamic> x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = MatrixXd(x) * A.transpose();

这也有效:

MatrixXd A = MatrixXd::Random(3, 10);
ArrayXXd x = Array<double, 1, Dynamic>::Random(10);
MatrixXd y = x.matrix() * A.transpose();

对于第一个示例(clang-500.2.79),我的编译器为我提供了以下错误消息:

代码/Eigen/src/Core/ArrayWrapper.h:178:56:错误:无法使用“const Scalar *”类型的右值(又名“const double”初始化“ScalarWithConstIfNotLvalue *”(又名“double *”)类型的返回对象*')内联 ScalarWithConstIfNotLvalue* data() { return m_expression.data(); }

4

0 回答 0