#include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/set/for_each_i.hpp> #define SET (a)(b)(c)(d) #define MACRO(r, data, i, elem) BOOST_PP_CAT(elem, BOOST_PP_CAT(data, i)) BOOST_PP_SET_FOR_EACH_I(MACRO, _, SET) // expands to a_0 b_1 c_2 d_3