The BOOST_PP_LIST_REST_N_D macro expands to a list of all but the first count elements of a list.  It reenters BOOST_PP_WHILE with maximum efficiency.

Usage

BOOST_PP_LIST_REST_N_D(d, count, list)

Arguments

d
The next available BOOST_PP_WHILE iteration.
count
The number of elements to remove from the beginning of list.
list
The list from which the elements are extracted.

Remarks

This macro removes count elements from the beginning of list and returns the remainder as a list

See Also

Requirements

Header:  <boost/preprocessor/list/rest_n.hpp>

Sample Code

#include <boost/preprocessor/list/fold_right.hpp>
#include <boost/preprocessor/list/rest_n.hpp>

#define L1 (a, (b, (c, (d, BOOST_PP_NIL))))
#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))

#define OP(d, state, x) (BOOST_PP_LIST_REST_N_D(d, 2, x), state)

BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
/*
   expands to...
   ((c, (d, BOOST_PP_NIL)), ((c, (d, BOOST_PP_NIL)),
   ((c, (d, BOOST_PP_NIL)), BOOST_PP_NIL)))
*/

Copyright Housemarque Oy 2002
Copyright Paul Mensonides 2002

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)