När jag fipplade med ett programexempel ur en bok, där man resonerade lite kring mallar och exemplifierade med en typoberoende
swap-funktion, fick jag problem med att kompilatorn snackade om tvetydighet. När jag bytte namn på min funktionsmall till
jswap, så fungerade det hela emellertid helt smärtfritt. Det verkade alltså som att funktionen krockade med något.
För att ta reda på detta så skrev jag följande lilla korta snutt:
Kod: Markera allt
#include <iostream>
int main(){
using namespace std;
int i=5, j=10;
cout << "i=" << i << endl << "j=" << j << endl;
swap(i,j);
cout << "i=" << i << endl << "j=" << j << endl;
return 0;
}
Jag läste mig till att det skulle finnas en swap-funktion i <algorithm> i standardbiblioteket, men som man kan se här, så har jag inte inkluderat denna! Ändå fungerar det hela. Variablerna byter värde med varandra utan problem och kompilatorn (g++ 4.2) verkar väldigt nöjd och belåten.
Har man av någon outgrundlig anledning lagt en
swap-funktion i
iostream? Det låter ju lite knasigt…