これがメタプログラミングってやつかい?
昨日、templateを使ったsin,cosテーブルをGameProgrammingGems1巻で見たコードを思い出しながら作れないか挑戦してみた。
結果としては作れなかったわけだけれど、フィボナッチ数列は作れたので惜しいところまでは来ていると思う。GPGは半年以上前に借りて読んだような気がする。理解が浅いせいでこのような状態になっているわけだ。フィボナッチか総和かは忘れたけれど、メタプログラミングのコードはその本にも書いていた気がするねー。
昨日かけたコード
template<unsigned int N> struct Fibon { enum { val = Fibon<N-1>::val + Fibon<N-2>::val }; }; template<> struct Fibon<1> { enum { val = 1 }; }; template<> struct Fibon<0> { enum { val = 1 }; };
sin,cosはテーラー展開でinlineするとか云々だった気がする(enumは使わなかったかな?).
非型テンプレート引数は整数値である必要があるので、そのために360〜720段階くらいにしてテーブルを作ればよいのかしら?今のところそのくらいしか見通しが立っていない。後、コンパイルオプションだけ設定しなければいけないね.
こういうコードもまた楽しくていいね....