#CPP

// MAP(f, a, b, c...)
// -> f(a) , f(b) , f(c) ...
#define MAP(macro, ...) __VA_OPT__(EXPAND(MAP_IMPL(macro, __VA_ARGS__)))
#define MAP_IMPL_AGAIN() MAP_IMPL
#define MAP_IMPL(macro, first, ...) \
    macro(first) __VA_OPT__(, MAP_IMPL_AGAIN PARENS (macro, __VA_ARGS__))

// MAP_WITHOUT_COMMA(f, a, b, c...)
// -> f(a) f(b) f(c) ...
#define MAP_WITHOUT_COMMA(macro, ...) __VA_OPT__(EXPAND(MAP_WITHOUT_COMMA_IMPL(macro, __VA_ARGS__)))
#define MAP_WITHOUT_COMMA_IMPL_AGAIN() MAP_WITHOUT_COMMA_IMPL
#define MAP_WITHOUT_COMMA_IMPL(macro, first, ...) \
    macro(first) __VA_OPT__(MAP_WITHOUT_COMMA_IMPL_AGAIN PARENS (macro, __VA_ARGS__))
 
 
Back to Top