На следующий вопрос: «Макросы Variadic с нулевыми аргументами и запятыми» я попробовал:
#define MAKE_TEMPLATE(...) template <typename T, ## __VA_ARGS__ >
MAKE_TEMPLATE()
struct Testing{};
Компилятор дает: ошибка: ожидаемый идентификатор до токена ‘>’
Но g ++ -E main.cpp (чтобы получить расширение макроса) show:
template <typename T >
struct Testing{};
И с:
MAKE_TEMPLATE(typename U)
struct Testing{};
Это скомпилировано ОК.
Чего не хватает?
http://en.wikipedia.org/wiki/Variadic_macro:
GCC поддерживает следующее (непереносимое) расширение: ## __VA_ARGS__
Других решений пока нет …