调用C++成员模板函数时因模板参数写法引发编译错误
解决模板成员函数调用的编译错误:编译器误将
<解析为小于运算符 问题出在调用类的模板成员函数时,编译器无法自动识别SearchHybridParallel是一个模板函数,因此把<2当成了普通的小于运算符比较,导致语法错误。
解决方案
在成员函数名前添加template关键字,明确告诉编译器这是一个模板函数调用:
KDTreeFlann<TypeParam, 3> kdtree(points); kdtree.template SearchHybridParallel<2>(...);
原因说明
因为kdtree是依赖于模板参数TypeParam的对象(属于依赖类型),在编译阶段,编译器无法提前确定SearchHybridParallel是模板成员还是普通成员函数。加上template关键字后,编译器就能正确将后面的<>解析为模板参数列表,而不是小于运算符。
内容的提问来源于stack exchange,提问作者Bogi
相关产品推荐
相关产品推荐

