【发布时间】:2017-01-05 20:39:57
【问题描述】:
#include <iostream>
#include <Eigen/Core>
namespace Eigen {
// float op double -> double
template <typename BinaryOp>
struct ScalarBinaryOpTraits<float, double, BinaryOp> {
enum { Defined = 1 };
typedef double ReturnType;
};
// double op float -> double
template <typename BinaryOp>
struct ScalarBinaryOpTraits<double, float, BinaryOp> {
enum { Defined = 1 };
typedef double ReturnType;
};
}
int main() {
Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> m1(2, 2);
m1 << 1, 2, 3, 4;
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> m2(2, 2);
m2 << 1, 2, 3, 4;
std::cerr << m1 * m2 <<std::endl; // <- boom!!
}
我想知道为什么上面的代码不能编译。 Here 是完整的错误消息。请注意,如果我将 m1 和 m2 定义为具有固定大小,则可以正常工作。
我正在使用Eigen3.3.1。它在运行 OSX-10.12 并使用 Apple 的 clang-800.0.42.1 的 Mac 上进行了测试。
【问题讨论】: