#include <boost/preprocessor/list/adt.hpp> #define LIST (x, (y, (z, BOOST_PP_NIL))) BOOST_PP_LIST_FIRST(x) // expands to x BOOST_PP_LIST_REST(x) // expands to (y, (z, BOOST_PP_NIL))