У меня есть следующий код:
//1
template<typename T>
void c(T in) {
cout << "Template c(" << in << ")" << endl;
}
//2
template<>
void c<>(int* in) {
cout << "Template specialization b(" << in << ")" <<endl;
}
//3
template<typename T>
void c(T* in) {
cout << "Template for pointers c(" << in << ")" <<endl;
}
//..
int i = 8;
c(&i);
Может кто-нибудь объяснить мне, почему в следующем примере компилятор выбирает функцию # 3, но когда я меняю порядок функций # 2 и # 3, компилятор выбирает функцию # 2?