函数テンプレートを使って函数を定義する

#include <iostream>
using namespace std;

// 普通の方法。
char sute(int a) {
    return (char)a;
}
int sute(char a) {
    return (int)a;
}

// 函数テンプレートを使う方法。dtypeが任意のデータ型を表す。ここでは"dtype"にしたが記号は何でもよい。
// 函数テンプレートを使って定義する函数も多重定義できる。
template <class dtype> dtype sute(dtype a) {
    return a;
}
template <class dtype1, class dtype2> dtype1 sute(dtype2 a, dtype1 b) {
    return a;
}

int main() {
    cout << sute(65) << endl;
    cout << sute('A') << endl; 
    cout << sute(0.1) << endl << endl;

    cout << sute('b', 1) << endl;
    cout << sute('c', '1') << endl << endl;
    
    int i = 1;
    char c = 1;
    cout << sute(65, i) << endl;
    cout << sute(66, i) << endl;
    cout << sute(65, c) << endl;
    cout << sute(66, c) << endl;

    return 0;
}

f:id:ti-nspire:20190619145810p:plain