c++ - 模板化函数中的模板不被解析为模板,而是作为比较
问题描述
我在Scalar
type 上模板化了这个微不足道的函数,而 type 又使用了 Eigen 模板。
#include<Eigen/Core>
template<typename Scalar>
void somefunc(){
Eigen::Matrix<Scalar,9,1> v;
v.segment<3>(3).setZero();
}
编译时g++ -I/usr/include/eigen3 ex.cc
,我得到
a.cc: In function ‘void somefunc()’:
a.cc:6:18: error: request for member ‘setZero’ in ‘3’, which is of non-class type ‘int’
v.segment<3>(3).setZero();
^~~~~~~
意味着代码被解析为v.segment
[smaller-than]
3
[greater-than]
(3).setZero()
而不是模板参数。我尝试typename
在前面添加,Eigen::Matrix
但它没有改变任何东西。
怎么了?我必须忽略一些明显的东西。
解决方案
推荐阅读
- ignite - Apache Ignite + Spark Dataframes:客户端与服务器的疑问
- smooch - Twitter 的 Smooch API - ConsumerKey 不匹配错误
- .htaccess - 如何在 gtmetrix 0 到 100% 中最小化重定向以提高 htaccess 代码中的站点速度
- python - 如何在 Python 中读取多个 PDF
- php - pcntl_fork 后 PHP 关闭连接
- python - 过滤从 monthdatescalendar 获得的日期给出 AttributeError: 'list' object has no attribute 'weekday'
- java - 在 mainActivity 的 frameLayout 中查看 Fragment
- ios - ObjC <-> Swift 桥接和工厂方法
- python - InterfaceError sqlite 错误绑定参数0
- javascript - 将高级自定义字段添加到 OnClick JS 函数中