/********************************************************************* Filename: swap.cpp Section: 13.1 Function Templates Compiler: Borland C++ Version 5.0 Summer 1996 C++ Distilled: Descriptions, Prescriptions and Style By Ira Pohl *********************************************************************/ //generic swap //templates are used for generic programming #include template void swap(T& x, T& y) { T temp; temp = x; x = y; y = temp; } int main() { int i = 5, j = 9; enum color { black, green, red} c1 = red, c2 = black; char c[10] = "ABCDEFGHI"; cout << "before int swap " << i << ", " << j << endl; swap(i, j); cout << "after int swap " << i << ", " << j << endl; swap(c1, c2); cout << "after color swap " << c1 << ", " << c2 << endl; swap(i, static_cast(c[6])); //creates a temporary cout << "after int with cast swap " << i << ", " << c[6] << endl; //prints 71 G c[6] remains G swap(i, j);//allowed under ANSI explicit use of swap(char&, char&) cout << "after char cast " << i << ", " << j << endl; swap(i, reinterpret_cast(c[4])); cout << "after int with cast swap " << i << ", " << c[4] << endl; }