Makro preprocesora variadic FOR_EACH zgodne z MSVC ++ 10

Widziałem kilka pytań z prośbą o zmianę na wariacjęFOR_EACH makro. Jednak niestety podane odpowiedzi są niekompatybilne z VC ++ 10 z powodu rozszerzenia __VA_ARGS __ jako jednego argumentu podczas przekazywania go do innego makra. Czy ktoś mógłby dostarczyć wersję zgodną z C ++ 11 (zgodną z przyszłością), która nadal działa z VC ++ 10. Być może używając „obejścia”, o którym często wspominamy,#define EXPAND(x) x, jednak nie wiem, gdzie to umieścić, aby uzyskać, na przykład, drugą uogólnioną częśćta odpowiedź pracować w VC ++ 10.

Aby wyjaśnić, zamierzone zachowanie jest dlaFOR_EACH(x, a, b, ...) produkowaćx(a) x(b), ..., gdzie x jest innym makro.

questionAnswers(1)

yourAnswerToTheQuestion