再帰テンプレートでべき乗を計算
タイトル通り、templateを再帰的に使用することで関数チックな動作をさせる。0の場合を特殊化することで計算をうまく終了させている。また2つのtemplate引数がある場合の特殊化の書き方も覚えておきたい。
#include<iostream> using namespace std; //べき乗を計算 template <int N, int M> struct power{ static const int value = N * power<N, M - 1>::value; }; //0の場合だけ特殊化 template<int N> struct power<N, 0>{ static const int value = 1; }; //メイン関数 int main() { //2^3を”コンパイル時に”計算 cout << power<2, 3>::value << endl; return 0; }
実行結果は
8