template<typename A, typename B> class MyClass<int, float> {...not allowed. Indeed, if you specify formal parameters Aand B, your template should use them.
The second case is just normal: you say that you do specialization without "free" parameters.
Intermediate case may be
template<typename A> class MyClass<A, float> {...
which is again true: here you only fix the second parameter of the template.
: . . :
template<typename X, typename Y, typename Z> class MyClass<X*, Y(Z&)> {...
. " X, Y Z, MyClass X* Y(Z&), ". , .