Частичная специализация шаблона функции

Может кто-нибудь объяснить, почему частичная специализация недействительна для шаблона функции, но она отлично подходит для шаблона класса.

Я понимаю, что частичная специализация может заставить компилятор запутаться с перегрузкой функции, но мне все еще нужна дополнительная информация, чтобы я мог полностью понять. Может ли кто-нибудь предложить мне несколько опрятных примеров?

Ответ 1

В путанице достаточно причины, в данном случае.

И есть существующее альтернативное решение: перегрузка. Комитет потратил много сил (мне кажется, меня там не было), получая функцию перегрузки, работающую для шаблонов, и, конечно же, часть причины этого заключалась в том, что ей не приходилось решать менее общую проблему жестких задач шаблона функции частичная специализация.

Ответ 2

Теперь я не эксперт, но я думаю, что ответ на первую часть состоит в том, что специализация частичной функции будет конфликтовать (и быть частично избыточной) с перегрузкой функции. Что касается второй части, вы можете использовать структуру шаблона, которая служит контейнером для той вещи, которую вы хотите частично специализировать.