いまさらだがFizzBuzz。 1から100まで、3の倍数5の倍数云々って、全部定数の計算じゃね? というところに気付き、自称メタプログラマー(略してメタグラマー)俺の血が騒いだ。 定数計算なら、それは実行時ではなくコンパイル時に行なわれるべきだ……。 というわけでC++テンプレートメタプログラミング召喚。 #include <iostream> const int FIZZ_NUM = 3; const int BUZZ_NUM = 5; const int BEGIN_NUM = 1; const int END_NUM = 101; template<int N> struct Fizz { enum {PRINT = 0, NEXT = N + 1}; static void print() {} }; template<int N> struct Buzz { enum {PRI