13 Templates [temp]

13.7 Template declarations [temp.decls]

13.7.1 Class templates [temp.class]

13.7.1.5 Enumeration members of class templates [temp.mem.enum]

An enumeration member of a class template may be defined outside the class template definition.
Example
:
template<class T> struct A {
  enum E : T;
};
A<int> a;
template<class T> enum A<T>::E : T { e1, e2 };
A<int>::E e = A<int>::e1;
— end example
 ]