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>();
不起作用。
为了使其适用于1
或MyEnum::task1
之类的值,您需要以不同的方式声明模板参数,例如
template<int v>
要么
template<MyEnum v>
关于c++ - 如何创建枚举的模板类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54817487/