prog.cpp:36:60: error: type/value mismatch at argument 2 in template parameter list for ‘template<class IntType, IntType MIN_VAL, IntType MAX_VAL> struct BoundInt’
struct ConversionTraits< BoundInt<IntType, IntType, IntType> >
^
prog.cpp:36:60: error: expected a constant of type ‘IntType’, got ‘IntType’
prog.cpp:36:60: error: type/value mismatch at argument 3 in template parameter list for ‘template<class IntType, IntType MIN_VAL, IntType MAX_VAL> struct BoundInt’
prog.cpp:36:60: error: expected a constant of type ‘IntType’, got ‘IntType’
prog.cpp:36:62: error: template argument 1 is invalid
struct ConversionTraits< BoundInt<IntType, IntType, IntType> >
^
prog.cpp: In instantiation of ‘void Value<T>::convert() [with T = BoundInt<unsigned int, 0u, 100u>]’:
prog.cpp:47:16: required from here
prog.cpp:20:32: error: incomplete type ‘ConversionTraits<BoundInt<unsigned int, 0u, 100u> >’ used in nested name specifier
ConversionTraits<T>::convert();
^