ствует стандартное преобразова
Автор admin Вторник, 19 мая 2009 11:32
ствует стандартное преобразование int в double. Однако шаблон может сгенерировать int-версию, которая обеспечивает лучшее совпадение; именно это и происходит в программе. Вызов во второй строке точно совпадает с double-версией, а в третьей строке снова вызывается та же функция, при этом 1 автоматически преобразуется в 1.0. В четвертой строке напрямую вызывается версия min() для const char*. В строке 5 мы заставляем компилятор задействовать шаблон, присоединяя пустую пару угловых скобок к имени функции. Компилятор генерирует специализацию для const char* и использует ее (в этом можно убедиться по неправильному ответу — компилятор Шаблоны функций 201 просто сравнивает адреса1!) Вероятно, вас интересует, почему мы указываем объявление using вместо директивы using namespace std? Потому что некоторые компиляторы автоматически включают заголовочные файлы, содержащие std::min(), и эта версия будет конфликтовать с именем нашей функции min(). Как отмечалось выше, перегрузка одноименных шаблонов допускается при условии, что компилятор сможет различить их. Например, можно объявить шаблон функции min() с тремя ар
Комментарии закрыты.
Последние комментарии