The BOOST_PP_ENUM_SHIFTED_z macro represents a reentry into the BOOST_PP_ENUM_SHIFTED repetition construct.


BOOST_PP_ENUM_SHIFTED_ ## z(count, macro, data)


The next available BOOST_PP_REPEAT dimension.
The number of repetitious calls to macro.  Valid values range from 0 to BOOST_PP_LIMIT_REPEAT.
A ternary operation of the form macro(z, n, data).  This macro is expanded by BOOST_PP_ENUM_SHIFTED with the next available repetition depth, the current repetition number, and the auxiliary data argument. 
Auxiliary data passed to macro.


This macro expands to the sequence:
macro(z, 1, data), ... macro(z, count - 1, data)
At certain times, it may be necessary to perform the concatenation with BOOST_PP_CAT rather than the preprocessor token-pasting operator.  This happens when the z value is a macro invocation itself.  It needs a delay to allow it to expand.  The syntax in such a scenario becomes:
BOOST_PP_CAT(BOOST_PP_ENUM_SHIFTED_, z)(count, macro, data).

See Also


Header:  <boost/preprocessor/repetition/enum_shifted.hpp>

Sample Code

#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/repetition/enum_shifted.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>

#define TEXT(z, n, text) text

#define MACRO(z, n, data) \
   ( \
      BOOST_PP_ENUM_SHIFTED_ ## z( \
         BOOST_PP_INC(n), \
         TEXT, data \
      ) \
   ) \

BOOST_PP_REPEAT(3, MACRO, class) // expands to () (class) (class, class)

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