
Hi, I'm trying to make a macro chain that expands something like this *A, B, C* into something like this *{"A", create<AFile>}, {"B", create<BFile>}, {"C", create<CFile>}* This is what I have come up with *#define FORMATS A, B, C // Add new formats here* *#define SEQ_FORMATS BOOST_PP_VARIADIC_TO_SEQ(FORMATS)* *#define ARG_PAIR(s, data, x) {#x, create<x##File>}* *#define SEQ_ARG_PAIRS BOOST_PP_SEQ_TRANSFORM(ARG_PAIR, ~, SEQ_FORMATS)* *#define ARG_PAIRS BOOST_PP_SEQ_ENUM(SEQ_ARG_PAIRS)* The SEQ_ARG_PAIRS macro does expand into *({"A", create<AFile>}) ({"B", create<BFile>}) ({"C", create<CFile>})* but ARG_PAIRS fails with the following error: test.cpp:20:1: error: macro "BOOST_PP_SEQ_SIZE_0" passed 2 arguments, but takes just 1 ARG_PAIRS ^ BOOST_PP_SEQ_ENUM_0 ({"B", create<BFile>}) ({"C", create<CFile>}) ({"A", create<AFile>}) ({"B", create<BFile>}) ({"C", create<CFile>}) Any ideas? thanks a lot