gpt4 book ai didi

c++ - Eigen 库 : Take a copy of a templated function parameter

转载 作者:行者123 更新时间:2023-11-28 00:43:51 25 4
gpt4 key购买 nike

我正在尝试将任意特征向量/数组类型的内容转换为 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
}

现在的问题是,当我从 input 参数类型中删除 & 符号以获取拷贝时,我得到一个空的 input 变量。它包含系数 0 的一些虚假值,其余为零。

当我通过引用获取参数时,一切正常。谁能告诉我为什么?

PS.:对于那些可能想知道我为什么要复制的人;是否建议在本次演讲中帮助优化器:http://www.youtube.com/watch?v=eR34r7HOU14 (下半场结束)

最佳答案

DenseBase<> 类是一个空基类,因此创建该类型的对象没有意义。所以如果你真的想按值传递输入,那么它的类型必须是 DERIVED 而不是 DenseBase。尽管如此,按值传递它听起来仍然很奇怪,而您的函数的唯一目的是制作另一个拷贝。

关于c++ - Eigen 库 : Take a copy of a templated function parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com