スタックオーバーフローの質問:「引数がゼロの可変長マクロとカンマ」に続いて、次のことを試しました。
#define MAKE_TEMPLATE(...) template <typename T, ## __VA_ARGS__ >
MAKE_TEMPLATE()
struct Testing{};
コンパイラは次を返します:エラー: '>' トークンの前に識別子が必要です
ただし、g++ -E main.cpp (マクロ展開を取得するため) は次のように表示されます。
template <typename T >
struct Testing{};
そして:
MAKE_TEMPLATE(typename U)
struct Testing{};
コンパイルOKです。何が足りない?