template<typename T, T Min>
class LowerBoundedType {};
template<typename T> class vectorelement {};
template<> class vectorelement<Categorical> { typedef LowerBoundedType<double, 0.0> type; };
с ошибкой:
error: 'double' is not a valid type for a template constant parameter
Единственными числовыми типами, допустимыми для параметра шаблона, не являющегося типом, являются целые числа и перечисления. Таким образом, у вас не может быть нетипового параметра шаблона типа double
.