What about this:
template <typename IntType, IntType MIN_VAL, IntType MAX_VAL>
struct ConversionTraits< BoundInt<IntType, MIN_VAL, MAX_VAL> >
{
static void convert() {}
};
It may look conterintuitive, because the plain ConversionTraits<>
template has only 1 parameter, while the specialization has 3.
But then, template BoundInt<>
has three parameters, so if you don't want to specify them, have to use one template argument for each.