#include <iostream>
enum class E
{
A,B,C
};
class Some
{
public:
template <E> void func();
};
template<> void Some::func<E::A>()
{
std::cout << "A\n";
}
template<> void Some::func<E::B>()
{
std::cout << "B\n";
}
template<> void Some::func<E::C>()
{
std::cout << "B\n";
}
int main()
{
Some some;
some.func<E::A>();
some.func<E::B>();
some.func<E::C>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSBjbGFzcyBFCnsKICAgIEEsQixDCn07CgpjbGFzcyBTb21lCnsKcHVibGljOgogICAgdGVtcGxhdGUgPEU+IHZvaWQgZnVuYygpOwp9OwoKCnRlbXBsYXRlPD4gdm9pZCBTb21lOjpmdW5jPEU6OkE+KCkKewogICBzdGQ6OmNvdXQgPDwgIkFcbiI7Cn0KdGVtcGxhdGU8PiB2b2lkIFNvbWU6OmZ1bmM8RTo6Qj4oKQp7CiAgIHN0ZDo6Y291dCA8PCAiQlxuIjsKfQp0ZW1wbGF0ZTw+IHZvaWQgU29tZTo6ZnVuYzxFOjpDPigpCnsKICAgc3RkOjpjb3V0IDw8ICJCXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIFNvbWUgc29tZTsKICAgIHNvbWUuZnVuYzxFOjpBPigpOwogICAgc29tZS5mdW5jPEU6OkI+KCk7CiAgICBzb21lLmZ1bmM8RTo6Qz4oKTsKfQo=