up:: Cpp
source:: 9.1. 関数テンプレート - ゼロから学ぶ C++

CSharpのcsharp ジェネリックメソッドと似た機能。
リアルタイムでソースを変更する機能っぽい?

template <typename T>
T Sum(T a, T b) {
    return a + b;
}

あちらと違い、引数型の指定部分は先に出てくる。
typenameでもclassでも使える。
参照は参照型だからこのまま渡される、&は必要無い?

またdecltypeを使用することで、引数型から戻り値型を推論できる。

template <typename T, typename U>
auto Sum(T a, U b) -> decltype(a + b) {
    return a + b;
}

応用で可変長引数テンプレートがある。