私は無事にこのマクロ連結し、さらに拡大
#define TEMPLATE_DECL_BEGIN_0 template <
#define TEMPLATE_DECL_BEGIN_1 TEMPLATE_DECL_BEGIN_0 typename Arg0
#define TEMPLATE_DECL_BEGIN_2 TEMPLATE_DECL_BEGIN_1 , typename Arg1
#define TEMPLATE_DECL_BEGIN_3 TEMPLATE_DECL_BEGIN_2 , typename Arg2
#define TEMPLATE_DECL(N) TEMPLATE_DECL_BEGIN_ ## N >
TEMPLATE_DECL(0)
TEMPLATE_DECL(1)
TEMPLATE_DECL(2)
TEMPLATE_DECL(3)
は、任意の合理的に標準Cプリプロセッサの
template < >
template < typename Arg0 >
template < typename Arg0 , typename Arg1 >
template < typename Arg0 , typename Arg1 , typename Arg2 >
を生成するために期待することはできますか?
私の心配は、前交換後の連結後、マクロ展開についてです:それはそうNがによって例えば置き換えられます後、その後
TEMPLATE_DECL_BEGIN_2
になることを
TEMPLATE_DECL_BEGIN_1 , typename Arg1
に動作しますか?
私は、複数のテンプレートパラメータリストに関してコンパイルエラーが発生すると思いますが...好奇心が強いので、プリプロセッサコードなしでテンプレート特殊化を定義することは簡単です。なぜこのアプローチをとっていますか? – AJG85
私はそれがコンパイルするつもりはなかったと言いました。これは、マクロを使用する半自動カスタムRTTIに必要なスニペットです。 – valerio