Templates Caffe2 InputStype方法中模板语句的说明

Templates Caffe2 InputStype方法中模板语句的说明,templates,caffe2,Templates,Caffe2,Caffe2框架在文件中包含以下代码: 模板 内联布尔输入类型(int idx){ 返回输入值(idx)->模板IsType(); } 我不理解这个代码片段的第三行:为什么这里使用template语句?据我所知,template后面总是跟着,用于定义类型T,如本代码段的第一行所示 为什么我们需要在调用IsType()之前编写template InputIsType方法是OperatorBase类的一部分,它是Caffe2中所有操作符的基类。每个运算符包含(除其他外)以下专用字段(在中定义):

Caffe2框架在文件中包含以下代码:

模板
内联布尔输入类型(int idx){
返回输入值(idx)->模板IsType();
}
我不理解这个代码片段的第三行:为什么这里使用
template
语句?据我所知,
template
后面总是跟着
,用于定义类型
T
,如本代码段的第一行所示


为什么我们需要在调用
IsType()
之前编写
template

InputIsType方法是
OperatorBase
类的一部分,它是Caffe2中所有操作符的基类。每个运算符包含(除其他外)以下专用字段(在中定义):

注意:这将
T
类型与Blob的类型相匹配。我不会详细说明它是如何工作的。让我们假设它根据需要返回
True
False

因此,要检查Blob
a
是否具有类型
int
,我们必须调用

A->IsType<int>();

我是否正确理解了问题:您问零件
模板IsType()
是什么意思?@hbaders是的,零件模板IsType()是什么意思我的回答是否澄清了您的问题?如你所见,如果你相信这是你问题的解决方案,你可以接受答案。否则,请对缺少的内容留下评论。您能否举例说明->IsType(),<小于,>大于?我理解boost::函数f的情况;函数是一个数字。我不明白->IsType是一个比T小的数字,T可能也是一个数字。A->IsType()是无意义的。我认为解析器不能将t解析为一个数字。小于和大于示例只是一个示例,说明了如何存在歧义。在这种情况下,它并不完全相同,但思想是相同的:您需要编写
模板
,以明确告诉编译器您要为类型
T
调用
IsType
vector<const Blob*> inputs_;
vector<Blob*> outputs_;
/**
 * Checks if the content stored in the blob is of type T.
 */
template <class T>
bool IsType() const { return meta_.Match<T>(); }
A->IsType<int>();
A->template IsType<int>();
inputs_.at(idx)->template IsType<T>();