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?