This macro expands to the comma-separated sequence:
param ## 0, param ## 1, ... param ## count - 1
#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)
/*
expands to...
template<class T0> class X0 { };
template<class T0, class T1> class X1 { };
*/