Re[2]: Для чего шаблонной функции нужна особая сигнатура?
От: rg45 СССР  
Дата: 26.01.23 21:11
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Зададимся вопросом: существует ли такой код, для которого этот вызов не будет вызовом функции template<> void f<>(char* p);?

BFE>Я, таки, напишу это: не всё так однозначно!

Как раз в данном случае все однозначно, ответ: существует. Вот три варианта, которые выиграют overload resolution — при любом объявлении primary template:

void f(char*);
void f(char* &);
void f(char* const &);


Правда первый создает коллизию с двумя другими, но это не важно в данном случае. Главное, что все три выигрывают у специализации. Еще раз подчеркну, при любом объявлении основного шаблона (совместимом с приведенной специализацией, разумеется).
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 26.01.2023 21:23 rg45 . Предыдущая версия . Еще …
Отредактировано 26.01.2023 21:21 rg45 . Предыдущая версия .
Отредактировано 26.01.2023 21:13 rg45 . Предыдущая версия .
Отредактировано 26.01.2023 21:13 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.