Nie potrafię zrozumieć wiersza nr 7:
...
template <class T>
void Swap(T &, T &); //prototyp szablonu
template <> void Swap<job>(job &, job &); //jawna specjalizacja dla typu job
int main()
{
template void Swap<char>(char &, char &); //jawna konkretyzacja dla typu char
short a, b;
...
Swap(a, b); //niejawna konkretyzacja szablonu dla typu short
job n, m;
...
Swap(n, m); //użycie jawnej specjalizacji dla typu job
char g, h;
...
Swap(g, h); //uzycie jawnie skonkretyzowanego szablonu dla typu char
...
}
Ten przykładowy kod został wzięty z książki. Niestety, nie kompiluje się we wskazanej przeze mnie linijce. Poprosiłbym o wytłumaczenie kogoś do czego służy taki szablon jawnej konkretyzacji. Rozumiem jego użycie w taki sposób:
cout << funkcja<int>(x, y) << endl; //jawne żądanie
//konkretyzacji szablonu z typem int,
//wartości x i y są w ramach wywołania funkcji rzutowane na typ int,
//a sama funkcja zwraca także wartość typu int
Ale nie rozumiem szablonu dla takiej jawnej konkretyzacji.