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

S>Я задал уточняющий вопрос, был бы очень признателен вам, если бы вы нашли возможность на него ответить.


Да, в целом Ваше предположение верно — я хочу оставить в заголовке только перегруженные объявления, а шаблон спрятать в файл реализации (.cpp), поскольку так проще всего ограничить количество возможных вариантов, и не нарушать совместимости с другими библиотеками.

Увы, меня всегда раздражает стремление свести обсуждение понятий и смыслов к обмену формулами или фрагментами кода, если речи не идет о синтаксисе, особенностях семантики и подобных вещах, где код является ключевым.

S>в моей вселенной нет сигнатуры "шаблонной функции", как и нет такой штуки, как "шаблонная функция". А есть "шаблон функции"


Это достаточно странно, поскольку и в англоязычной, и в русскоязычной литературе термины "шаблон функции" и "шаблонная функция" вполне себе равнозначны, то же справедливо и для классов.

S>не функция, а некий шаблон


Или функция, которая является шаблонной — типовой, применимой к различным конкретным условиям.

S>если нет функции, то нет и сигнатуры.


У компилятора есть "шаблон сигнатуры", куда он подставляет пространства имен, параметры функции, тип результата, соглашение о связях и т.п., получая сигнатуру. Соответственно, и эти шаблоны разные для обычных/перегруженных и шаблонных функций, и конечные сигнатуры получаются разными.

S>в стандарте C++ все это может быть описано сильно другими словами


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

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