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

最佳答案

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


它确实适用于enum类型,就像适用于int类型一样。

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



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



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

template<int v>


要么

template<MyEnum v>

关于c++ - 如何创建枚举的模板类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54817487/

10-12 07:35