如何解决无法推导出 Eigen::Matrix 的模板参数
当我尝试使用 MSVC 19.latest 编译以下函数 (forward
) 时,我收到以下错误消息。
'Eigen::Matrix<float,ann_output_len<LayerNodeConfig...>::value,1,_Rows,1> forward(const
ArtificialNeuralNetwork<InputSize,LayerNodeConfig...> &,const Eigen::Matrix<float,Rows,1> &)':
Could not deduce template argument for 'const Eigen::Matrix<float,1> &' from
'Eigen::Matrix<float,2,1>'
forward
界面
template<int InputSize,int ... LayerNodeConfig>
auto forward(const ArtificialNeuralNetwork<InputSize,LayerNodeConfig...>& ann,const RL::Arrayf<InputSize>& input)
-> typename ANN::output_t<LayerNodeConfig...>
在main
函数中
RL::Arrayf<2> X;
auto Y = forward(sampling_policy,X);
现在我不明白的是为什么编译器不能用 2 代替 Rows
和 _Rows
。
任何见解表示赞赏。 您可以使用此链接 https://godbolt.org/z/7Mj5ee 在 Godbolt.org 中尝试完整代码,如果您愿意,可以尝试自己编译。
注意:我尝试用最新的 GCC 编译器编译相同的代码并编译。
更新 - 2021 年 3 月 6 日:
我通过更改函数 forward
的接口以接受 Eigen::DenseBase<Derived>
而不是 RL::Arrayf<InputSize>
来解决方法。
任何有兴趣的人都可以在这里阅读更多相关信息,https://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。