Хотя было бы неплохо использовать перечисление в качестве параметра шаблона и распознавать каждое отдельное перечисление отдельно, как вы его написали, этого не произойдет.Вместо этого я могу предложить вам объявить следующее:
template<MyEnum T>
void func(){
std::cout << T << std::endl;
}
Самое замечательное в C ++ состоит в том, что способ структурирования шаблонов дает вам полную систему Turning.Следовательно, вам не нужен отдельный вызов, подобный этому, поскольку вы объявили, что получите каждое отдельное значение перечисления.Вы можете создать отдельную функцию для каждого значения , когда вам это нужно и только тогда, когда вам нужно .
Теперь, перейдя к другой проблеме вашего вопроса, как прокомментировал @delnan, вы можетеУ меня нет двух разных Enums с одинаковыми именами.Однако у вас может быть класс с переменной-членом, называемой TWO
, такой, что:
struct Foo{
int TWO;
};
struct Bar{
int TWO;
};
template<typename T>
void func(){
std::cout << T::TWO << std::endl;
}
Надеюсь, это поможет.