为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们遇到过这个问题吗?C++模板实参设为具体数值?十分感谢

大佬们遇到过这个问题吗?C++模板实参设为具体数值?十分感谢

慕码人2483693 2019-09-26 09:47:08
看到C++第三方矩阵库Eigen,这里使用时:/*用typedef定义了很多模板,例如:Matrix4f表示4×4的floats矩阵*/typedefMatrixMatrix4f;这是什么情况,为什么模板实参直接是数值4了?模板实参不应该是类型吗,这个怎么做到的?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

c++函数模板(functiontemplate)是能够使用泛型类型(generictype)作为参数的特殊函数(当然也可以使用具体的类型和类作为参数),我们可以使用泛型类型(typename)或泛型类(classname)作为参数传入。函数模板是在编译期间扩展(expand)的,用具体的type和class替换。Eigen中Matrix的定义是Matrix,使用Matrix将模板扩展,可以看到声明中的最后两个参数的类型就是具体的类型int,所以扩展的时候用4也是正确的,可以参考Eigendocument
                            
查看完整回答
反对 回复 2019-09-26
?
慕容3067478

TA贡献1773条经验 获得超3个赞

没什么,泛型是c++先引进的,c++的泛型参数不仅可以是类型,还可以是数值,因为c++是编译型语言,数值的泛型参数很容易处理。
后来的java,c#之类的语言仿造c++的模板实现泛型,但好像都没有没有继承c++的数值型泛型参数。
                            
查看完整回答
反对 回复 2019-09-26
  • 2 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信