0

テンプレート型のために引数の数が異なるいくつかのテンプレート化された関数があります。この関数はマクロ定義でラップされています。

#define SomeTemplate(TemplateType, Arguments) someFunc<TemplateType>(Arguments);

関数呼び出しに引数を 1 つしか使用していない場合はすべて問題ありませんが、さらに多くの引数が必要です。次のように、さまざまなマクロの定義を通じてそのようなことを行うブーストを調べました。

#define TEMP_1(Arg1) someFunc<Template>(Arg1);
#define TEMP_2(Arg1, Arg2) someFunc<Template>(Arg1, Arg2);
#define TEMP_3(Arg1, Arg2, Arg3) someFunc<Template>(Arg1, Arg2, Arg3);

しかし、このコードはコンパイラー用に移植可能とマークされています。任意の数の引数でいくつかの定義を使用する方法があります。どうやってやるの?

4

1 に答える 1

2

マクロ定義で使用する唯一の方法ですが__VA__ARGS__、移植性が低く、VC6 などの古いコンパイラは var arg'ed マクロをサポートしていないため、 MSVC GCCを参照してください。

于 2010-06-20T22:14:39.317 に答える