enum MyEnum{
task1 = 0,
task2
};
// template<MyEnum T> works
template<class T>
void fun(){
}
int main(){
fun<MyEnum::task1>();
// fun<int>(); works
}
如何创建枚举的模板类型
当我尝试使用枚举创建模板时,出现错误,提示没有匹配的函数来调用'fun()
为什么int按非枚举类型工作?
当我执行template<MyEnum T>
时,它可以工作,但是我不明白为什么。
答案 0 :(得分:1)
为什么int按非枚举类型工作?
它对enum
类型起作用,就像对int
类型的作用一样。
就像fun<int>();
一样,fun<MyEnum>();
一样
就像fun<1>();
不起作用一样,fun<MyEnum::task1>();
也不起作用。
要使其适用于1
或MyEnum::task1
之类的值,您需要以不同的方式声明template参数,例如
template<int v>
或
template<MyEnum v>