The BOOST_PP_ENUM_SHIFTED_PARAMS_Z macro generates a comma-separated, shifted list of parameters. It reenters BOOST_PP_REPEAT with maximum efficiency.

#### Usage

BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param)

#### Arguments

z
  The next available BOOST_PP_REPEAT dimension.
count
  The number of parameters to generate. Valid values range from 0 to BOOST_PP_LIMIT_REPEAT.
param
  The text of the parameter. BOOST_PP_ENUM_SHIFTED_PARAMS_Z concatenates numbers ranging from 1 to count - 1 to generate parameters.

#### Remarks

This macro expands to the comma-separated sequence:
param ## 1, ... param ## count - 1

#### See Also

- BOOST_PP_LIMIT_REPEAT
- BOOST_PP_ENUM_SHIFTED_PARAMS

#### Requirements

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

#### Sample Code

    #include <boost/preprocessor/repetition/enum_params.hpp>
    #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
    #include <boost/preprocessor/repetition/repeat.hpp>

    int add(void) {
       return 0;
    }

    #define ADD_F(z, n, _) \
       int add_f(BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), int p)) { \
          return p0 + add_f(BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, BOOST_PP_INC(n), p)); \
       } \
       /**/

    BOOST_PP_REPEAT(5, ADD_F, nil)