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 <boost/preprocessor/arithmetic/inc.hpp> #include <boost/preprocessor/repetition/enum_params.hpp> #include <boost/preprocessor/repetition/repeat.hpp> #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<int, int> x1; typedef Y0<int> y0; typedef Y1<int, int> y1; return 0; }
On 5/17/2011 12:46 PM, er wrote:
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?
It is never necessary to use BOOST_PP_ENUM_z instead of BOOST_PP_ENUM. It is only helpful, in the sense of being faster, if you use BOOST_PP_ENUM_z instead of BOOST_PP_ENUM from within in a pp-lib ternary macro of the form macro(z, n, data), where you can use the z parameter to call it using BOOST_PP_ENUM_ ## z(parameters).
participants (2)
-
Edward Diener
-
er