abs(-500);のようにして呼び出します。}を生成してくれます。~つまり、コンパイラから見るとテンプレート関数は「コード生成のテンプレートとなる関数」なので、テンプレート関数と呼ばれるわけです。共通です(つまり、abs(-500)を呼び出したならその関数内のT型変数はすべてint型になる)~そこで、二種類以上の違った型を引数に取りたいときは次のようにします。}また、以下のような特徴があります。独自に定義した型に対して適用するとどうなるでしょうか。おかしなことが起こり暴走する」か、「そもそもコンパイルが通らない」かのどちらかです。~正解は後者で、暴走したりすることはありません。生成し、コンパイルしようと試みて失敗します。定義されているならば、この''テンプレート関数は独自に定義した型に対しても適用できる''ということで、非常に汎用性の高い関数を定義することができます。T>のTを決定しますが、これを強制的に指定することもできます。生成させることができます。[#g0cdfddc]また、関数を定義する時に、「int型に対してだけ違う処理をしたい」といったことも可能です。次のようにint型に特化した関数を別につくってやります。}こうしてやると、引数がint型であった場合か、'''inc<int>(引数)'''とした場合に、後者の関数が呼び出されます。...)よりも後ろに書くことです。前に書くとエラーになる)~これは以下のようにしても実現できそうですが、微妙に動作が異なることがあります。endl;とした場合です。したものを生成する場合」と、「オーバーロードされたint型の関数を呼び出す場合」があります。使えばこのような曖昧さは回避できます。[#e49e91d3]テンプレート関数と同様に、テンプレートクラスというものがあります。~これは「メンバの型が実行時に定まるクラス」です。(テンプレート関数は「引数及び返り値の型が実行時に決まる関数」でした。)~次のようにして定義します。意味はテンプレート関数と同じです。(これはtemplateであって、Tというのは型の名前ですよ、という意味。詳しくはテンプレート関数の項を参照)~このテンプレートクラスを使うには、次のようにします。指定した型になります。)~またテンプレート関数と同様に、二つ以上の型を取ることもできます。[#recbf60f]typenameには、一般の引数と同じように、デフォルトの値を指定することができます。型名>'''として指定しておきます。2);としたのと同じことになります。省略できないのと同じ、と思っておきましょう。)また、次のようなこともできます。};このとき、次の3つは同じ意味です。