以下のプログラムは、ループ、ランタイム再帰、またはライブラリ関数 [pow] を使用せずに、2 の n 乗を計算します。
これは、TEMPLATE METAPROGRAMMING手法を使用します。
#include <iostream>
using namespace std;
template<int n> struct funStruct
{
enum { val = 2*funStruct<n-1>::val };
};
template<> struct funStruct<0>
{
enum { val = 1 };
};
int main()
{
cout << funStruct<8>::val << endl;
return 0;
}
構造の代わりに関数を使用できるかどうかをさまよっていましたか?