Member functions of class templates are also function templates in their own right. That means that you can specialize them explicitly (as you do in your second example), but function templates cannot be specialized partially (as you are trying in your first example).
As a workaround, you can specialize the entire class partially:
template <typename T>
class MyClass<T, 1>
{
public:
void func1() { cout << "special: func1" << endl; };
// ...
};
You may need to refactor your code to put common code into a base class to make this approach maintainable.