Okay, hier ist das Programm und funktioniert absolut richtig
#include <iostream>
using namespace std;
template <typename T>
void Swap(T &a , T &b);
int main(){
int i = 10;
int j = 20;
cout<<"i, j = " << i <<" , " <<j<<endl;
Swap(i,j);
cout<<"i, j = " << i <<" , " <<j<<endl;
}
template <typename T>
void Swap(T &a , T &b){
T temp;
temp = a ;
a = b;
b= temp;
}
aber wenn ich den funktionsnamen ändere ab Tausch zu Tauschen
es erzeugt eine Fehlermeldung
Fehler: Aufruf von überladenem ‘swap(int&, int&)’ ist mehrdeutig| Hinweis: Kandidaten sind: void swap(T&, T&) [with T = int]| ||=== Bau abgeschlossen: 1 Fehler, 0 Warnungen ===|
Was ist passiert, ist es eine Regel, Funktionen mit Vorlagen zu starten, die mit einem Großbuchstaben beginnen?
Wer/wo wurde vorgeschlagen, dass Funktionsnamen mit Vorlagen mit einem Großbuchstaben beginnen sollten? Ich frage, weil ich es nicht weiß, nicht weil ich anderer Meinung wäre. Allerdings verwendet die Standardbibliothek zum Beispiel auch die Benennungskonvention in Kleinbuchstaben, so dass ich auf den ersten Blick keinen großen Vorteil für ein solches Namensschema finden kann. 🙂
– zxcdw
10. November 2012 um 16:12 Uhr