テンプレートでたらいまわし(2回目)

前回、「テンプレートの方はあまり数字を大きくできない」と書いたけど、試しにやってみるとどうなるか。

やることは単純で、以下のような定義を追加して、

typedef Typelist<int, T12> T13;
typedef Typelist<int, T13> T14;
typedef Typelist<int, T14> T15;
…(延々繰り返し)
typedef Typelist<int, T49> T50;

main()関数の1行目を次のように変えるだけ。

    int n = Tarai< TYPELIST_3(T24, T12, T1) >::value;
  • 実行結果
% time g++ tarai2.cpp

real    3m30.974s
user    3m18.028s
sys     0m1.024s

% time ./a.out
24

real    0m0.004s
user    0m0.004s
sys     0m0.000s

tarai(24,12,1)をコンパイルするのに3分もかかった(それでも実行は一瞬)。結論、コンパイラ虐めすぎ。