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.