私はこれ(それが実際に便利なユースケースから来ていますが、私は単純化した例でプレーしてきた)のようなマクロを持っている:私は、その後機能バインド操作
を書くことができます#define MY_MACRO(M) M(3) M(5) M(7)
#define MULTIPLY_BY_2(A) (2*A)
を
MY_MACRO(MULTIPLY_BY_2)
// -> (2*3) (2*5) (2*7)
Cool!私が欲しいのはこれです:
#define MULTIPLY(A,B) (A*B)
MY_MACRO(BIND(MULTIPLY, 2))
上記と同じ結果が得られます。 BINDは何ができますか?私はいくつかのハックを試みましたが、これはほとんど可能です(私は驚くべきことです)と報告することができます。しかし、それは一般的ではなく、かわいくない。これはできますよく? (つまり、純粋にCPPで実際の機能的な機能を構築していますか?)バインドされたマクロをバインドするのに十分うまくできますか?
私が本当に尋ねるのは、あなたが気づいているプリプロセッサライブラリにこのようなツールがあるかどうかということでしょうか?私はBoostでこのようなものは全く見つけられませんでした。
プリプロセッサであまりにも多くの処理をしようとすると、将来的にコードをデバッグ/理解することができなくなります。 –
Boostは、Vesa Karvonenの著作に基づいています。これは明らかに、語彙的環境や末尾再帰などのプリプロセッサで完全な関数言語を実装しています。本気ですか?しかし、その素敵でシンプルな部分的なアプリケーション構文の下ではそうはありません。 – Kaz