#include <iostream>

enum E
{
    A,
    B,
    C
};

class Some
{
public:
    template<E x>
    typename std::enable_if<x == E::A, void>::type func()
    {
        std::cout << "A\n";
    }
    template<E x>
    typename std::enable_if<x == E::B, void>::type func()
    {
        std::cout << "B\n";
    }
    template<E x>
    typename std::enable_if<x == E::C, void>::type func()
    {
        std::cout << "C\n";
    }
};

int main()
{
    Some some;
    some.func<E::A>();
    some.func<E::B>();
    some.func<E::C>();
    return 0;
}
