Предположим, у меня есть шаблон, который работает с необработанными указателями:
template<typename T>
void processPointer(T* ptr);
Я не хочу, чтобы это вызывалось с помощью указателей void*
. Кажется, у меня есть два выбора. Я могу удалить перегрузку без шаблонов:
void processPointer(void*) = delete;
Или я могу удалить экземпляр шаблона:
template<>
void processPointer<void>(void*) = delete;
Объявление перегрузки без шаблонов проще (без фьюзинга с угловыми скобками). Есть ли причины, по которым я предпочел бы удалить экземпляр шаблона вместо этого?