Частичная специализация шаблона функции
Может кто-нибудь объяснить, почему частичная специализация недействительна для шаблона функции, но она отлично подходит для шаблона класса.
Я понимаю, что частичная специализация может заставить компилятор запутаться с перегрузкой функции, но мне все еще нужна дополнительная информация, чтобы я мог полностью понять. Может ли кто-нибудь предложить мне несколько опрятных примеров?
Ответы
Ответ 1
В путанице достаточно причины, в данном случае.
И есть существующее альтернативное решение: перегрузка. Комитет потратил много сил (мне кажется, меня там не было), получая функцию перегрузки, работающую для шаблонов, и, конечно же, часть причины этого заключалась в том, что ей не приходилось решать менее общую проблему жестких задач шаблона функции частичная специализация.
Ответ 2
Теперь я не эксперт, но я думаю, что ответ на первую часть состоит в том, что специализация частичной функции будет конфликтовать (и быть частично избыточной) с перегрузкой функции. Что касается второй части, вы можете использовать структуру шаблона, которая служит контейнером для той вещи, которую вы хотите частично специализировать.