
I'm unable to use the reentrant macros for iteration currently..I think I'm probably misunderstanding their usage, and a push in the right direction would be much appreciated. My need is to iterate through a sequence, then iterate through a sequence nested within each element. As I understand, I should be able to call (e.g.): * BOOST_PP_SEQ_FOR_EACH(OP, data, seq) to iterate through the outer sequence * then in OP(r, data, elem) call BOOST_PP_SEQ_FOR_EACH_R(r, OP2, data, elem) For me this keeps producing rubbish with a lot of non-expanded macro names embedded. I've reduced this down to a minimal example iterating over a 2-dimensional sequence; I know the final line isn't valid C++, I'm just checking preprocessing results at this stage. #include <boost/preprocessor/seq/transform.hpp> #define INNER(s, data, elem) <elem> #define MIDDLE(s, data, seq) BOOST_PP_SEQ_TRANSFORM_S(s, INNER, data, seq) #define OUTER(seqseq) BOOST_PP_SEQ_TRANSFORM( MIDDLE, _, seqseq) outer gives: OUTER( ((a) (b) (c)) ((i) (j) (k)) ((x) (y) (z)) ) Resultant output of this, with preprocessor line directives and empty lines removed, is: outer gives: ( BOOST_PP_SEQ_TAIL_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_SEQ_TRANSFORM_O(5, BOOST_PP_SEQ_TRANSFORM_O(4, BOOST_PP_SEQ_TRANSFORM_O(3, ( INNER , _, (nil)), a), b), c)) ( BOOST_PP_SEQ_TAIL_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_SEQ_TRANSFORM_O(6, BOOST_PP_SEQ_TRANSFORM_O(5, BOOST_PP_SEQ_TRANSFORM_O(4, ( INNER , _, (nil)), i), j), k)) ( BOOST_PP_SEQ_TAIL_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_SEQ_TRANSFORM_O(7, BOOST_PP_SEQ_TRANSFORM_O(6, BOOST_PP_SEQ_TRANSFORM_O(5, ( INNER , _, (nil)), x), y), z)) For reference, I am using the following: boost 1.46.00 g++ (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) TIA --rob