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