-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Roman Perepelitsa
I have implemented macro which converts SEQ to ((a, b)) ((c, d)) but implementation is huge (I copy-pasted a lot of code from boost.preprocessor). Now I need to enumerate sequence of triples and I don't want to copy-paste again.
Any tips?
#include <boost/preprocessor/cat.hpp> #define BINARY_SEQ_TO_SEQ(seq) \ BOOST_PP_CAT(BINARY_SEQ_TO_SEQ_A seq, 0) \ /**/ #define BINARY_SEQ_TO_SEQ_A(x, y) ((x, y)) BINARY_SEQ_TO_SEQ_B #define BINARY_SEQ_TO_SEQ_B(x, y) ((x, y)) BINARY_SEQ_TO_SEQ_A #define BINARY_SEQ_TO_SEQ_A0 #define BINARY_SEQ_TO_SEQ_B0 BINARY_SEQ_TO_SEQ( (a, b)(c, d)(e, f) ) // ((a, b))((c, d))((e, f)) #define TERNARY_SEQ_TO_SEQ(seq) \ BOOST_PP_CAT(TERNARY_SEQ_TO_SEQ_A seq, 0) \ /**/ #define TERNARY_SEQ_TO_SEQ_A(x, y, z) ((x, y, z)) TERNARY_SEQ_TO_SEQ_B #define TERNARY_SEQ_TO_SEQ_B(x, y, z) ((x, y, z)) TERNARY_SEQ_TO_SEQ_A #define TERNARY_SEQ_TO_SEQ_A0 #define TERNARY_SEQ_TO_SEQ_B0 TERNARY_SEQ_TO_SEQ( (a, b, c)(d, e, f)(g, h, i) ) // ((a, b, c))((d, e, f))((g, h, i)) Regards, Paul Mensonides