nilton nilton - 8 days ago 7
C++ Question

Template specialization for enum

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?

Answer

You can use std::enable_if with std::is_enum from <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.