The BOOST_PP_LIST_FOR_EACH macro repeats a macro for each element in a list.


BOOST_PP_LIST_FOR_EACH(macro, data, list)


A ternary macro of the form macro(r, data, elem).  This macro is expanded by BOOST_PP_LIST_FOR_EACH with each element in list.  It is expanded with the next available BOOST_PP_FOR repetition, the auxiliary data, and the current element.
Auxiliary data passed to macro.
The list for which macro will be invoked on each element.


This macro is a repetition construct.  If list is (a, (b, (c, BOOST_PP_NIL))), it expands to the sequence:
macro(r, data, a) macro(r, data, b) macro(r, data, c)
Previously, this macro could not be used inside BOOST_PP_FOR.  There is no longer any such restriction.  It is more efficient, however, to use BOOST_PP_LIST_FOR_EACH_R in such a situation.

See Also


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

Sample Code

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/list/for_each.hpp>

#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))

#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)

BOOST_PP_LIST_FOR_EACH(MACRO, _, LIST) // expands to w_ x_ y_ z_

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