如何创建枚举的模板类型

时间:2019-02-21 22:50:24

标签: c++

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>时,它可以工作,但是我不明白为什么。

1 个答案:

答案 0 :(得分:1)

  

为什么int按非枚举类型工作?

它对enum类型起作用,就像对int类型的作用一样。

就像fun<int>();一样,fun<MyEnum>();一样


就像fun<1>();不起作用一样,fun<MyEnum::task1>();也不起作用。


要使其适用于1MyEnum::task1之类的值,您需要以不同的方式声明template参数,例如

template<int v>

template<MyEnum v>