C ++ 11: Especialização de função de modelo para tipos inteiros

Suponha que eu tenha uma função de modelo:

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

e eu quero escrever uma especialização para todos os tipos inteiros primitivos. Qual é a melhor maneira de fazer isso?

O que eu quero dizer é:

template<typename I where is_integral<I>::value is true>
void f(I i)
{
    ...
}

e o compilador seleciona a segunda versão para tipos inteiros, e a primeira versão para todo o resto?

questionAnswers(5)

yourAnswerToTheQuestion