Здравствуйте, Евгений Музыченко, Вы писали:
S>>донесение до вас разницы между "шаблоном функции" (ключевое слово "шаблон") и "шаблонной функцией" (ключевое слово "функция")
ЕМ>Честное слово, я не понимаю, зачем Вы пытаетесь донести эту разницу до меня
Например, чтобы не читать больше про "сигнатуры шаблонных функций в C++".
ЕМ>коли я ее отлично знаю сам
Усомнюсь.
ЕМ>При том, что еще вчера понятия "шаблонной функции" в Вашей вселенной не былоАвтор: so5team
Дата: 23.01.23
.
Еще несколько лет назад я сам спокойно путал "шаблон функции" и "шаблонную функцию" и использовал эти два понятия как взаимозаменяемые. Пока мне не указали на разницу. С тех пор в моей вселенной в С++ "шаблонной функции" не существует.
ЕМ>Можно пример, в котором без этого не обойтись, и который был бы из разряда "хорошей практики"?
А вам зачем?
S>>А этого недостаточно?
ЕМ>Достаточно, чтобы сгодиться на крайний случай. Недостаточно, чтобы попрекать отсутствием твердого знания об этом на каждый день.
Видите ли, Евгений, вы тут заняли позицию "ну попробуйте мне что-то новое о программировании рассказать, да я на C++ почти 30 лет программирую". И типа говорите о том, что используете шаблоны в C++. Но вот какая штука сильно смущает: когда человек изучает шаблоны в C++, то он должен был бы изучить и правила выбора шаблонов функций. Их там несколько и они не то, чтобы сильно замороченные, но я большинство из них забываю постоянно. За исключением самого первого: обычные функции имеют приоритет перед шаблонами.
Это вообще-то одна из базовых вещей в C++ со времен 98-го стандарта. И вот мне (вероятно не только мне) непонятно: как можно программировать на C++ столько лет, да еще и шаблонами в C++ пользоваться, но не помнить одной из ключевых для шаблонов вещей. Да еще и вести себя в стиле "ну попробуйте мне что-то..."
По поводу вашей позиции сразу хочу сделать дисклаймер: это у меня такое впечатление сложилось, если я не прав, то извините, ошибся.
ЕМ>Но повторю: пока еще никто здесь не привел примера, в котором обсуждаемая особенность применялась бы иначе, как для спасения изначально неудачного кода.
Почему же неудачного? Был код, в котором была реализация какой-то функции, скажем, concat. Реализована правильно, работала без нареканий. Появился C++98, к этому коду добавили библиотеку, в которой есть шаблон concat. Если бы приоритет отдали шаблонам функций, то при перекомпиляции вызов старой concat незаметно был бы заменен на вызов нового шаблона concat.
ЕМ>На каком основании ее тут возводят в ранг "каждый обязан знать!"?
Ну вообще-то каждый должен, да. Хотя джуниорам в C++ простительно было бы. Мидлам уже нет.