Здравствуйте, Евгений Музыченко, Вы писали:
S>>В C++ вы можете иметь разные конкретные результаты применения шаблона функции. Т.е. разный код.
ЕМ>Этот код привязан к общему шаблону, или нет? Функции, полученные в результате реализации/специализации шаблона, как-то связаны между собой, или они полностью независимы?
Сложение a и b удовлетворяют общему шаблону или нет? Реализации сложения a и b полностью независимы?
ЕМ>Сравнение с другими языками имеет смысл лишь в плане философского обсуждения.
Мне казалось, что донесение до вас разницы между "шаблоном функции" (ключевое слово "шаблон") и "шаблонной функцией" (ключевое слово "функция") -- это и есть философское обсуджение.
ЕМ>Так какие же задачи наилучшим образом решаются именно сочетанием перегрузки и шаблона, где и перегруженные, и шаблонные функции полностью совпадают по типам параметров/результата? И для перегрузки, и для шаблона по отдельности есть множество характерных примеров. Есть примеры именно для данного их сочетания?
Да хотя бы банальное упрятывание реализации какой-то тяжелой и объемной реализации в .cpp-файл.
ЕМ>То есть, в этом нет никакого глубинного смысла или "наилучшего решения", и все сводится к банальному сохранению совместимости с очень старым кодом, который нет возможности модифицировать?
А этого недостаточно?
Кроме того, здесь мы явно имеем ситуацию, когда приоритет нужно отдать либо одному (скажем, обычным функциям), либо другому (скажем, шаблонам). И какой бы выбор не был сделан, всегда найдется кто-то с бородой до пола, который заявит, а я в программировании 40 лет, никогда подобной фигни не видел и не понимаю, почему так, объясните мне!