предпочтение перегрузке обычно

Автор admin Вторник, 19 мая 2009 11:32

предпочтение перегрузке обычной функции min() перед использованием шаблона. Если уже имеется функция, соответствующая вызову, зачем генерировать другую? Однако при отсутствии обычных функций перегруженные шаблоны функций могут привести к неоднозначности. Чтобы вероятность этого была сведена к минимуму, для шаблонов функций определен приоритет, при котором выбирается наиболее специализированный шаблон. Шаблон функции считается более специализированным, чем другой шаблон, если каждый потенциально подходящий для него список аргументов также подходит и для другого шаблона, но не наоборот. Рассмотрим следующие объявления шаблонов функций, взятые из примеров стандарта С++: tempiate void f(T): templates!ass T> void f(T*): template void f(const T*); Для первого шаблона подходит любой тип. Второй шаблон более специализирован, чем первый, потому что для него подходят только типы-указатели. Иначе говоря, набор вызовов, подходящих для второго шаблона, составляет подмножество набора вызовов для первого шаблона. Аналогичные отношения существуют между вторым и третьим объявлениями: третий шаблон може


Комментарии закрыты.