Для любого фиксированного типа вы можете специализироваться напрямую:
template <typename> struct apply; // primary template
template <unsigned int N>
struct apply<int_<N>>
{
typedef int_<N + 1> type;
};
Вы также можете специализироваться на шаблонах, которые принимают один целочисленный параметр:
template <template <unsigned int> class TInt, unsigned int N>
struct apply<TInt<N>>
{
typedef TInt<N + 1> type;
};
Последний будет соответствовать любому template <unsigned int> class
, поэтому будьте осторожны.