鍋あり谷あり

テーマを決めずに適当に書いています。

MPL と 可変長引数メタ関数

http://d.hatena.ne.jp/Nabetani/20050827#c1125206461
への返信。
で。文体が変わって。
Boost.MPL を使ったことがないので、おっしゃっていることが理解できているかどうか自信がないんですが、強行します。ご了承下さい。

たしかに。Boost.MPL で、メタ関数をマクロ定義するときには C99 の可変長引数マクロが使えると思います。
で。
マクロの展開結果は、結局 vector_c かその類に落ちるわけですが(そうですよね??)、その vector_c の定義を見ると、プリプロセス済み版と、非プリプロセス済み版があることがわかります(処理系によってどちらが使われるのかが決まるようです)。
プリプロセス済み版は、Boost.Preprocessor で作られてます。プリプロセス済み版は、それをプリプロセスした結果なんでしょう(preprocess_vector.py なんてファイルが含まれてるので python かもしれませんが、たぶん違う仕事をしているんじゃないかと思ってます。よく読んでません。)。

というわけで、結局 template だけで可変長引数ができているのではなく、プリプロセッサruby, python の類がなくては可変長引数(のようなもの)は作れないと思います。

とはいえ。
Boost.MPL があれば、template だけで可変長引数メタ関数が実現できることにはいささかも変わりありません。