При чтении о шаблонах я столкнулся следующий код:Основные шаблоны C++
template<class T>
void f(T x, T y) {
cout << "template" <<endl;
}
void f(int w, int z) {
cout << "Non template" <<endl;
}
int main() {
f(1,2);
f('a','b');
f(1,'b');
}
В книге говорится о том, что выход для этого кода будет:
Non template Template Non template
Последняя строка, f (1, 'b'), меня озадачивает (или его выход скорее). Что такое эмпирическое правило, которое компилятор выполняет в этом случае? Спасибо заранее.
Есть ли какая-то путаница здесь по поводу того, как C++ предпочитает * специализированные * реализации над типичными шаблонами? – tadman
@tadman Нет. Меня это не смутило. Как заявил MichaelCMS в своем ответе, * неявная литье * часть была неопределенной концепцией здесь. – Airwavezx