В качестве альтернативы @ ответа SingerofTheFall (который исправляет проблему при вызове макроса), вы также можете исправить проблему в самом макросе, сделав ее переменной:
#define MACRO_EXAMPLE(...) foo(__VA_ARGS__)
Это работает, позволяя препроцессору анализировать лямбда на токенах ,
в несколько аргументов, но затем снова использует все эти аргументы и разделительные запятые, поэтому чистый эффект - это то, что вы хотите.