Рассмотрим этот макрос:
#define MAKE_TEMPLATE(...) template <typename T, __VA_ARGS__ >
При использовании с нулевыми аргументами он создает неверный код, так как компилятор ожидает идентификатор после запятой. На самом деле, препроцессор VC достаточно умен, чтобы удалить запятую, но GCC нет. (в случае, если местоположение по умолчанию перемещено на машине)
Что бы это было?