The BOOST_PP_SEQ_FOR_EACH_I macro repeats a macro for each element in a seq.


BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq)


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


This macro is a repetition construct.  If seq is (a)(b)(c), it expands to the sequence:
macro(r, data, 0, a) macro(r, data, 1, b) macro(r, data, 2, c)
For maximum efficiency, use BOOST_PP_SEQ_FOR_EACH_I_R

See Also


Header:  <boost/preprocessor/seq/for_each_i.hpp>

Sample Code

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>

#define SEQ (a)(b)(c)(d)

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

BOOST_PP_SEQ_FOR_EACH_I(MACRO, _, SEQ) // expands to a_0 b_1 c_2 d_3

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