template<typename T>
void f(typename T::typ x)
{ //...
}

template<typename T>
void f(...)
{//...
}


struct Pokus
{
    enum typ {ano, ne};
};


f<long>(); // Volá 2. funkci
f<Pokus>(); // Volá 2. funkci
f<Pokus>(Pokus::ne); // Volá 1. funkci
