Czy ktoś mógłby wyjaśnić, dlaczego raz została użyta metoda c(T*)
i następnym razem d<>(int*)
? metody c
i wydaje się identyczne do mnie i nie mogę zrozumieć, dlaczego nie jest to ten sam rodzaj metody nazywanej.C++ różne metody szablonów wywoływane na tej samej zmiennej
#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;
}
wyjściowa:
(T*)
(int*)
Różnią się one w kolejności. – ghostofstandardspast
Metody zamawiania mogą mieć jakikolwiek wpływ? – zlenyk
Oczywiście, mogą. Zobacz: [Dlaczego nie specjalizować szablonów funkcji?] (Http://www.gotw.ca/publications/mill17.htm) autorstwa Sutter, o co dokładnie chodzi. – legends2k