specialização em Modelo VS Sobrecarga de Função

Um livro didático Tenho anotações de que você pode fornecer sua própria implementação para funções de biblioteca padrão comoswap(x,y) via especialização de modelo para sobrecarga de funções. Isso seria útil para qualquer tipo que possa se beneficiar de algo diferente de uma troca de atribuição, comoSTL containers por exemplo (que já possui trocas escritas, eu sei

As minhas perguntas são:

O que é melhor: especialização de modelo para fornecer sua implementação de troca especializada ou sobrecarga de função, fornecendo os parâmetros exatos que você deseja usar sem um model

Por que é melhor? Ou se são iguais, por que isso?

questionAnswers(3)

yourAnswerToTheQuestion