Is it possible to specialize a templatized method for enums?
Something like (the invalid code below):
template <typename T>
void f(T value);
template <>
void f<enum T>(T value);
In the case it’s not possible, then supposing I have specializations for a number of types, like int, unsigned int, long long, unsigned long long, etc, then which of the specializations an enum value will use?
You can use
std::enable_ifwithstd::is_enumfrom<type_traits>to accomplish this.In an answer to one of my questions, litb posted a very detailed and well-written explanation of how this can be done with the Boost equivalents.