MSVC não expande __VA_ARGS__ corretamente

Considere este código:

#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)

A saída esperada éX = 1 and VA_ARGS = 2, 3 para ambas as macros, e é isso que estou recebendo com o GCC, no entanto, o MSVC expande isso como:

X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =

Isso é,__VA_ARGS__ é expandido como um único argumento, em vez de ser dividido em vários.

Alguma maneira de contornar isso?

questionAnswers(3)

yourAnswerToTheQuestion