是否可以将带有模板化参数的特征块表达式用作左值?

时间:2017-08-10 16:06:13

标签: c++ xcode templates eigen

我在使用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,它就可以正常工作。它是否有任何理由不适用于模板化版本?

1 个答案:

答案 0 :(得分:2)

你需要写

a.template topLeftCorner<2,2>() = m;

这在此解释:http://eigen.tuxfamily.org/dox-devel/TopicTemplateKeyword.html