この前、Twitterで誰かが「コンパイラ言語でFizzbuzz書くなら、コンパイル時に全ての演算を済ませ、実行コストはI/O命令1個になるように最適化しないと」という話をしていた。いいこと言うな、と思ってスルーしていたのだが、体調不良で頭だけ動いている状態だったのでC++11でトライしてみることに。 案ずるより産むが易しというもので、割と簡単に綺麗に書けた。こんな感じ。 char配列を可変長のテンプレート引数として結合していって、文字列定数を生成するというテクニックは実際に使い所があるかもと思った。最近C++書いてないけど。 #include <cstdio> template <typename LHS, int N> struct numstr { template <char... Args> struct append { typedef typename numstr<LHS,