Could someone please help clarify the meaning of the _z extension?
In what situation should one use BOOST_PP_ENUM_z rather than BOOST_PP_ENUM?
Usage
BOOST_PP_ENUM_ ## z(count, macro, data)
Arguments
z
The next available BOOST_PP_REPEAT dimension.
http://www.boost.org/doc/libs/1_33_1/libs/preprocessor/doc/ref/enum_z.html
Examples:
#include
#include
#include
#define MACRO(z, n, _) \
template< \
BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), class T) \
> class X ## n { \
/* ... */ \
}; \
/**/
BOOST_PP_REPEAT(2, MACRO, nil)
#define MACRO1(z, n, _) \
template< \
BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), class T) \
> class Y ## n { \
/* ... */ \
}; \
/**/
BOOST_PP_REPEAT(2, MACRO1, nil)
int main (int argc, char * const argv[]) {
typedef X0<int> x0;
typedef X1 x1;
typedef Y0<int> y0;
typedef Y1 y1;
return 0;
}