Сообщение Re[3]: Для чего шаблонной функции нужна особая сигнатура? от 23.01.2023 10:21
Изменено 23.01.2023 13:01 σ
Re[3]: Для чего шаблонной функции нужна особая сигнатура?
ЕМ>В данном случае то, что мне нужно — отдельный вопрос.
Основной вопрос был о том, для чего сигнатура шаблонной функции отличается от сигнатуры перегруженной функции с той же комбинацией типов. Один из вариантов — для обеспечения приоритета. Еще могут быть какие-то основания?
Очевидно, для того, чтобы различать функции с одинаковым типом, но инстанциированные из разных шаблонов

Очевидно, для того, чтобы различать функции с одинаковым типом, но инстанциированные из разных шаблонов
template<typename T, typename U> void f(T, U); // 1
template<typename U, typename T> void f(T, U); // 2
int main()
{
f<int, double>(0, 0.); // 1
f<double, int>(0, 0.); // 2
}
Re[3]: Для чего шаблонной функции нужна особая сигнатура?
ЕМ>В данном случае то, что мне нужно — отдельный вопрос.
Основной вопрос был о том, для чего сигнатура шаблонной функции отличается от сигнатуры перегруженной функции с той же комбинацией типов. Один из вариантов — для обеспечения приоритета. Еще могут быть какие-то основания?
Очевидно, для того, чтобы различать функции с одинаковым типом, но инстанциированные из разных шаблонов
(https://timsong-cpp.github.io/cppwp/n4659/temp.over.link#1)

Очевидно, для того, чтобы различать функции с одинаковым типом, но инстанциированные из разных шаблонов
template<typename T, typename U> void f(T, U); // 1
template<typename U, typename T> void f(T, U); // 2
int main()
{
f<int, double>(0, 0.); // 1
f<double, int>(0, 0.); // 2
}
(https://timsong-cpp.github.io/cppwp/n4659/temp.over.link#1)