Re[10]: Для чего шаблонной функции нужна особая сигнатура?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 24.01.23 10:45
Оценка:
Здравствуйте, so5team, Вы писали:

S>В C++ вы можете иметь разные конкретные результаты применения шаблона функции. Т.е. разный код.


Этот код привязан к общему шаблону, или нет? Функции, полученные в результате реализации/специализации шаблона, как-то связаны между собой, или они полностью независимы?

S>Внутри шаблонной функции в языках с генериками код всегда будет одинаковый.


Сравнение с другими языками имеет смысл лишь в плане философского обсуждения. Если Вы считаете, что термин "template function" неприменим к C++ — возражайте Страуструпу, Александреску, Майерсу и прочим корифеям, которые употребляют его регулярно.

S>Если эта задача наилучшим образом решается перегрузкой, то она решается перегрузкой. Если шаблонами -- то шаблонами (включая специализации для них).


Так какие же задачи наилучшим образом решаются именно сочетанием перегрузки и шаблона, где и перегруженные, и шаблонные функции полностью совпадают по типам параметров/результата? И для перегрузки, и для шаблона по отдельности есть множество характерных примеров. Есть примеры именно для данного их сочетания?

S>Достаточно вспомнить, что шаблоны в язык добавили сильно позже того, как язык стал мейнстримом. Так что одна из целей того, что у обычных функций есть приоритет над шаблонными, -- это обеспечение той же самой логики работы кода, который был написан до появления шаблонов, при переходе на более свежие версии языка.


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