●次のテンプレート関数2種(仮引数がポインタ型,仮引数が参照型)を完成させよ
※元のソースファイルはこちらからダウンロード。
#include <iostream> using namespace std; // 通常版 swap関数 (仮引数型はポインタ型) void swapInt(int * ip1, int * ip2) { if (ip1 == 0 || ip2 == 0) return; int t; t = *ip1; *ip1 = *ip2; *ip2 = t; } // テンプレート版 myswap関数 (仮引数型はポインタ型) template<class T> void myswap( /* ここを完成させる */ ) { // ここを完成させる } // テンプレート版 swap関数 (仮引数型は参照型) template<class T> void swapRef( /* ここを完成させる */ ) { // ここを完成させる } int main() { int a = 1, b = 2; double c = 10.0, d = 20.0; swapInt(&a, &b); cout << "a is " << a << " , b is " << b << endl; // テンプレート版 myswap関数 (仮引数型はポインタ型)の呼び出し myswap(&a, &b); cout << "a is " << a << " , b is " << b << endl; // int型でもOKだし… myswap(&c, &d); cout << "c is " << c << " , d is " << d << endl; // double型でもOK! // テンプレート版 myswap関数 (仮引数型は参照型)の呼び出し swapRef(a, b); cout << "a is " << a << " , b is " << b << endl; // int型でもOKだし… swapRef(c, d); cout << "c is " << c << " , d is " << d << endl; // double型でもOK! char ch; cin >> ch; // プログラムが終了しないようにする。。 return 0; }