Re[13]: Для чего шаблонной функции нужна особая сигнатура?
От: so5team https://stiffstream.com
Дата: 24.01.23 15:52
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

S>>донесение до вас разницы между "шаблоном функции" (ключевое слово "шаблон") и "шаблонной функцией" (ключевое слово "функция")


ЕМ>Честное слово, я не понимаю, зачем Вы пытаетесь донести эту разницу до меня


Например, чтобы не читать больше про "сигнатуры шаблонных функций в C++".

ЕМ>коли я ее отлично знаю сам


Усомнюсь.

ЕМ>При том, что еще вчера понятия "шаблонной функции" в Вашей вселенной не было
Автор: so5team
Дата: 23.01.23
.


Еще несколько лет назад я сам спокойно путал "шаблон функции" и "шаблонную функцию" и использовал эти два понятия как взаимозаменяемые. Пока мне не указали на разницу. С тех пор в моей вселенной в С++ "шаблонной функции" не существует.

ЕМ>Можно пример, в котором без этого не обойтись, и который был бы из разряда "хорошей практики"?


А вам зачем?

S>>А этого недостаточно?


ЕМ>Достаточно, чтобы сгодиться на крайний случай. Недостаточно, чтобы попрекать отсутствием твердого знания об этом на каждый день.


Видите ли, Евгений, вы тут заняли позицию "ну попробуйте мне что-то новое о программировании рассказать, да я на C++ почти 30 лет программирую". И типа говорите о том, что используете шаблоны в C++. Но вот какая штука сильно смущает: когда человек изучает шаблоны в C++, то он должен был бы изучить и правила выбора шаблонов функций. Их там несколько и они не то, чтобы сильно замороченные, но я большинство из них забываю постоянно. За исключением самого первого: обычные функции имеют приоритет перед шаблонами.

Это вообще-то одна из базовых вещей в C++ со времен 98-го стандарта. И вот мне (вероятно не только мне) непонятно: как можно программировать на C++ столько лет, да еще и шаблонами в C++ пользоваться, но не помнить одной из ключевых для шаблонов вещей. Да еще и вести себя в стиле "ну попробуйте мне что-то..."

По поводу вашей позиции сразу хочу сделать дисклаймер: это у меня такое впечатление сложилось, если я не прав, то извините, ошибся.

ЕМ>Но повторю: пока еще никто здесь не привел примера, в котором обсуждаемая особенность применялась бы иначе, как для спасения изначально неудачного кода.


Почему же неудачного? Был код, в котором была реализация какой-то функции, скажем, concat. Реализована правильно, работала без нареканий. Появился C++98, к этому коду добавили библиотеку, в которой есть шаблон concat. Если бы приоритет отдали шаблонам функций, то при перекомпиляции вызов старой concat незаметно был бы заменен на вызов нового шаблона concat.

ЕМ>На каком основании ее тут возводят в ранг "каждый обязан знать!"?


Ну вообще-то каждый должен, да. Хотя джуниорам в C++ простительно было бы. Мидлам уже нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.