我在使用Eigen C ++库时遇到了问题。它是其中一个示例的模板化版本,但我似乎无法使其在xcode中运行。
template <typename Scalar>
void foo(){
Eigen::Matrix<Scalar, 2, 2> m = Eigen::Matrix<Scalar, 2, 2>::Identity();
Eigen::Matrix<Scalar, 4, 4> a = Eigen::Matrix<Scalar, 4, 4>::Constant(0.6);
a.topLeftCorner<2,2>() = m; //Expected expression!
std::cout << "result:" << std::endl << a << std::endl << std::endl;
}
由于&#34;预期表达式&#34;此代码无法编译。错误。我实际上并没有在任何地方调用该函数,如果我不对它进行模板化并使用double或float,它就可以正常工作。它是否有任何理由不适用于模板化版本?
答案 0 :(得分:2)
你需要写
a.template topLeftCorner<2,2>() = m;
这在此解释:http://eigen.tuxfamily.org/dox-devel/TopicTemplateKeyword.html