正式な呼び方かどうかわかりませんが、テンプレートを再帰的に呼び出すという意味です。 プログラムには連接・選択・反復の3つの要素が必要ですが、テンプレートを使用した連接・選択は今まで見てきた通りですね。 で、最後に反復をテンプレートの再帰呼び出しで実現しようという話です。 1〜Nまでの総和 //1〜Nまでの総和を求める(一般形) template< unsigned int N > struct sum { static const unsigned int value = N + func< N - 1 >::value; }; //N==1のときの特殊化 //再帰的に呼び出すので、必ず終了条件が必要。(再帰しない特殊化バージョン) template<> struct sum< 1 > { static const unsigned int value = 1; }; 実行時ではなく、コン