我想知道为什么这不适用于 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(); }