The BOOST_PP_LIST_FOR_EACH_I macro repeats a macro for each element in a list.
	
	Usage
		
			BOOST_PP_LIST_FOR_EACH_I(macro, data, list)
		
	Arguments
		
			- macro
- 
				A macro of the form macro(r, data, i, elem). 
				This macro is expanded by BOOST_PP_LIST_FOR_EACH_I with each element in list. 
				It is expanded with the next available BOOST_PP_FOR repetition, the auxiliary data, the index of the current element, and the current element.
			
- data
- 
				Auxiliary data passed to macro.
			
- list
- 
				The list for which macro will be invoked on each element.
			
Remarks
		
			This macro is a repetition construct. 
			If 
list is (
a, (
b, (
c, 
BOOST_PP_NIL))), it expands to the sequence:
			
				macro(r, data, 0, a) macro(r, data, 1, b) macro(r, data, 2, 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_I_R in such a situation.
		
	See Also
		
	Requirements
		
	Sample Code
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/list/for_each_i.hpp>
#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))
#define MACRO(r, data, i, elem) BOOST_PP_CAT(elem, BOOST_PP_CAT(data, i))
BOOST_PP_LIST_FOR_EACH_I(MACRO, _, LIST) // expands to w_0 x_1 y_2 z_3