У меня есть шаблон класса A, B, который нельзя изменить.
template<class T>
struct A{static void F(){}};
template<int I>
struct B{};
Я хочу специализироваться A
только тогда, когда T
равно B<I>
и 1<=I<=5
.
Если A можно изменить, это будет выглядеть следующим образом:
template<class T,class = void>//added second param
struct A{static void F(){}};
template<int I>
struct B{};
template<int I>
struct A< B<I>, std::enable_if_t<(1<=I&&I<=5)> >{static void F(){}};
int main(){
A<B<0>>::F();//call origin ver
A<B<1>>::F();//call specialized ver
A<B<10>>::F();//call origin ver
}
Возможно ли это?