In
template<MY_BOOL b>
class Vector<A,YES,B>{};
Поскольку A
и B
не указаны, вы получаете ошибку компилятора.Он не будет использовать A
и B
из основного шаблона, он будет использовать только типы / значения, определенные в специализации.
Поскольку вам нужна специализация для каждого из значений перечисления, вы можете сделать это, например,
template<class A,MY_BOOL,class B>
class Vector {};
template<class A, class B>
class Vector<A, YES, B>{ /* YES stuff */ };
template<class A, class B>
class Vector<A, NO, B>{ /* NO stuff */ };
template<class A, class B>
class Vector<A, MAYBE, B>{ /* MAYBE stuff */ };
И теперь у вас есть специализация для каждого из перечислений.