
#define SEQ (a,b,c)(1,2,3,4) BOOST_PP_VARIADIC_SEQ_TO_SEQ( SEQ ) // expands to ((a,b,c))((1,2,3,4))
In your implementations couldn't you use just two overload macros instead of 256? Like this: # define BOOST_PP_VARIADIC_SEQ_TO_SEQ(seq) BOOST_PP_CAT( BOOST_PP_VARIADIC_SEQ_TO_SEQ_1_ seq, BOOST_PP_NIL )() # # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_1_(...) (( __VA_ARGS__ )) BOOST_PP_VARIADIC_SEQ_TO_SEQ_2_ # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_2_(...) (( __VA_ARGS__ )) BOOST_PP_VARIADIC_SEQ_TO_SEQ_1_ # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_1_BOOST_PP_NIL() # define BOOST_PP_VARIADIC_SEQ_TO_SEQ_2_BOOST_PP_NIL() Also on a side note, when vardiacs are enabled it would be nice to add an `IS_PAREN` macro like this: #define IS_PAREN(x) IS_PAREN_CHECK(IS_PAREN_PROBE x) #define IS_PAREN_CHECK(...) IS_PAREN_CHECK_N(__VA_ARGS__,0) #define IS_PAREN_PROBE(...) ~, 1, #ifndef _MSC_VER #define IS_PAREN_CHECK_N(x, n, ...) n #else // MSVC workarounds #define IS_PAREN_CHECK_RES(x) x #define IS_PAREN_CHECK_II(x, n, ...) n #define IS_PAREN_CHECK_I(x) IS_PAREN_CHECK_RES(IS_PAREN_CHECK_II x) #define IS_PAREN_CHECK_N(...) IS_PAREN_CHECK_I((__VA_ARGS__)) #endif And you this macro to add support for zero sequences in boost pp.