たった一ファイルなのに、こんなに速いマシンなのに、コンパイル時間かかりすぎ。テンプレートとマクロで各モードの全組み合わせを生成しているせいだと思う。
と、.objファイルのサイズを見たら……100MB!!? あ、ありえねぇ……。
いろいろ調べてみたら、関数テンプレート内で、std::vector<関数ローカルクラス>を使っていたのが悪かったみたい。そりゃ、一つ一つのテンプレートインスタンスに対して個別のvectorができあがっちゃうわけで、肥大するわな。ローカルクラスを外に出したら10MBまで下がり、さらにvectorをやめて固定長の配列にしたら8MBまで下がった。