我试图将任意特征向量/数组类型的内容转换为std :: array。我从Eigen文档http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html中阅读了这一部分,所以这是我的功能:template<typename DERIVED>std::array<typename Eigen::DenseBase<DERIVED>::Scalar, Eigen::DenseBase<DERIVED>::RowsAtCompileTime>toStl (const Eigen::DenseBase<DERIVED>& input){... // Do conversion}现在的问题是,当我从输入参数类型中删除“&”号以进行复制时,我得到了一个空的输入变量。它包含系数0的一些虚假值,其余为零。当我通过引用获取参数时,一切正常。谁能告诉我为什么?PS:对于那些可能想知道为什么要复印的人;在此讨论中是否建议为了帮助优化器:http://www.youtube.com/watch?v=eR34r7HOU14(下半年结束) 最佳答案 DenseBase 类是空的基类,因此创建该类型的对象没有任何意义。因此,如果您真的想按值传递输入,则其类型必须为DERIVED而不是DenseBase。尽管如此,按值传递它仍然听起来很奇怪,而函数的唯一目的是创建另一个副本。关于c++ - Eigen 库:复制模板化函数参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17391924/