Может кто-нибудь объяснить, почему однажды используется метод c(T*)
и в следующий раз d<>(int*)
? методы c
и d
кажутся мне идентичными, и я не могу понять, почему не называется тот же тип метода.
#include <iostream>
using namespace std;
template<typename T>
void c(T){ cout <<"(T)" << endl; }
template<>
void c<>(int*){ cout <<"(int*)" << endl; }
template<typename T>
void c(T*){ cout <<"(T*)" << endl; }
template<typename T>
void d(T){ cout <<"(T)" << endl; }
template<typename T>
void d(T*){ cout <<"(T*)" << endl; }
template<>
void d<>(int*){ cout <<"(int*)" << endl; }
int main(){
int i;
c(&i);
d(&i);
return 0;
}
Вывод:
(T*)
(int*)