【发布时间】:2016-05-02 18:49:40
【问题描述】:
我有一个 .h 文件,其中包含我的所有模板,还有一个 .cpp 文件,其中包含我的主文件。
.h 模板的一部分:
template<int N, int P>
struct BOUND {
static inline int eval(int v) {
//...
return 1;
};
};
template<class K>
struct VAL_x {
static inline int eval(int v) {
//...
return 1;
};
};
template<int L, class K>
struct LIT {
static inline int eval(int v) {
//...
return 1;
};
};
template<class A, class B, class K>
struct ADD {
static inline int comp_b(int v){
// HERE check if class A is LIT or VAL_x
//...
return 2;
};
};
这是我在 main() 这个模板中的调用方式:
int main() {
typedef ADD<VAL_x<BOUND<2,3> >, LIT<2, BOUND<2,3> >, BOUND<2,3> > FORM;
FORM exec_form;
int y = 2;
int bounds = exec_form.comp_b(y);
return 0;
}
我如何知道我的struct 的ADD::comp() 函数中传递的参数是否是特定类的实例(例如LIT<>)?这些参数可以按任何顺序传递(例如,所有参数都可以是LIT,或者只有第二个)
注意:除了VAL_x、LIT、BOUND和ADD之外,还有其他结构。
【问题讨论】:
-
您的意思是模板中的参数对吧?不是
comp()的论点。一个最小的例子在这里会很好。 :) -
您的示例不起作用,因为您缺少
something的模板参数 -
@Dani 很抱歉,这是因为我试图更改名称并忘记了它......我现在将更新它以便更容易理解。
-
@gsamaras @ Dani 我已经更新了我的代码。
-
谢谢@marialena,这个
template<int L>的目的是什么?
标签: c++ class templates struct parameters