If list is, for example, (a, (b, (c, BOOST_PP_NIL))), this macro will produce:
#include <boost/preprocessor/list/adt.hpp> #include <boost/preprocessor/list/to_tuple.hpp> #include <boost/preprocessor/repetition/for.hpp> #define LIST (x, (y, (z, BOOST_PP_NIL))) #define PRED(r, state) BOOST_PP_LIST_IS_CONS(state) #define OP(r, state) BOOST_PP_LIST_REST(state) #define MACRO(r, state) BOOST_PP_LIST_TO_TUPLE_R(r, state) BOOST_PP_FOR(LIST, PRED, OP, MACRO) // expands to (x, y, z) (y, z) (z)
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)