Жрет любой класс, но не Enum:
The type `MyEnums' must be a reference type in order to use it as type parameter `K' in the generic type or method `PDrawer.DrawEnum<K>(ref K)'.
т е с ограничителем class принимаются только ссылочные типы
Enum наследуется от ValueType:
public static void Foo<K>(K val) where K : ValueType {
}
Foo<float>(0);
который оказывается "специальным", так же как и System.Object:
A constraint cannot be special class `System.ValueType'
Какие причины делать их "специальными"?