Quando é preferível excluir uma instanciação de modelo a excluir uma sobrecarga que não é do modelo?

Suponha que eu tenha um modelo que funcione com ponteiros brutos:

template<typename T>
void processPointer(T* ptr);

Eu não quero que isso seja chamado comvoid* ponteiros. Parece que tenho duas opções. Eu posso excluir uma sobrecarga que não é do modelo:

void processPointer(void*) = delete;

Ou posso excluir uma instanciação de modelo:

template<>
void processPointer<void>(void*) = delete;

Declarar a sobrecarga que não é do modelo é mais fácil (sem futzing com colchetes angulares). Existem razões pelas quais eu prefiro excluir a instanciação do modelo?

questionAnswers(4)

yourAnswerToTheQuestion