Templates Caffe2 InputStype方法中模板语句的说明
Caffe2框架在文件中包含以下代码:Templates Caffe2 InputStype方法中模板语句的说明,templates,caffe2,Templates,Caffe2,Caffe2框架在文件中包含以下代码: 模板 内联布尔输入类型(int idx){ 返回输入值(idx)->模板IsType(); } 我不理解这个代码片段的第三行:为什么这里使用template语句?据我所知,template后面总是跟着,用于定义类型T,如本代码段的第一行所示 为什么我们需要在调用IsType()之前编写template InputIsType方法是OperatorBase类的一部分,它是Caffe2中所有操作符的基类。每个运算符包含(除其他外)以下专用字段(在中定义):
模板
内联布尔输入类型(int idx){
返回输入值(idx)->模板IsType();
}
我不理解这个代码片段的第三行:为什么这里使用template
语句?据我所知,template
后面总是跟着
,用于定义类型T
,如本代码段的第一行所示
为什么我们需要在调用
IsType()
之前编写template
InputIsType方法是OperatorBase
类的一部分,它是Caffe2中所有操作符的基类。每个运算符包含(除其他外)以下专用字段(在中定义):
注意:这将T
类型与Blob的类型相匹配。我不会详细说明它是如何工作的。让我们假设它根据需要返回True
或False
因此,要检查Bloba
是否具有类型int
,我们必须调用
A->IsType<int>();
我是否正确理解了问题:您问零件
模板IsType()
是什么意思?@hbaders是的,零件模板IsType()是什么意思我的回答是否澄清了您的问题?如你所见,如果你相信这是你问题的解决方案,你可以接受答案。否则,请对缺少的内容留下评论。您能否举例说明->IsType(),<小于,>大于?我理解boost::函数f的情况;函数是一个数字。我不明白->IsType是一个比T小的数字,T可能也是一个数字。A->IsType模板
,以明确告诉编译器您要为类型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>();