Könnte jemand erklären, warum einmal Methode c(T*)
und das nächste Mal d<>(int*)
verwendet wird? Methoden c
und d
scheint mir identisch und ich kann nicht herausfinden, warum nicht die gleiche Art von Methode genannt wird.C++ verschiedene Template-Methoden für dieselbe Variable
#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;
}
Output:
(T*)
(int*)
Sie unterscheiden sich in der Anordnung. – ghostofstandardspast
Bestellmethoden können einen Einfluss haben? – zlenyk
Natürlich können sie. Siehe [Warum Funktionsschablonen nicht spezialisieren?] (Http://www.gotw.ca/publications/mill17.htm) von Sutter, was genau darum geht. – legends2k