関数テンプレート:
template<class T> T
max(T a, T b){return (a > b)? a: b;}
それを使用するとき:
max<int>(a, b); // Yeah, the "<int>" is optional most of the time.
しかし、あなたが許せば、このようにテンプレートを書くことができます:
T max<class T>(T a, T b){return (a > b)? a: b;}
//I know the return type T is not in its scope, don't focus on that.
したがって、同じ形式の宣言を維持し、通常の関数と同じように使用できます。「テンプレート」というキーワードを導入して入力する必要さえありません。クラステンプレートは同じだと思いますか?では、テンプレートを今日私たちが知っているフォームにする他の理由はありますか?
戻り値の型に注目しないようにフォームを変更しました。
auto max<class T>(T a, T b) -> T {return (a > b)? a: b;}
//This is C++11 only and ugly i guess.
//The type deduce happens at compile time
//means that return type really didn't to be a problem.