'identifier' : an 'enum' may not be declared as a template
The specified identifier was declared as an enum type preceded by the template keyword. Only the class, struct, and union specifiers can be used when declaring a templated class. The following code will generate this error:
template <class T> enum E{}; //error