Шаблонный метод специализации шаблонного класса
Вот мой код:
template<typename T1, typename T2> class MyClass
{
public:
template<int num> static int DoSomething();
};
template<typename T1, typename T2> template<int num> int MyClass<T1, T2>::DoSomething()
{
cout << "This is the common method" << endl;
cout << "sizeof(T1) = " << sizeof(T1) << endl;
cout << "sizeof(T2) = " << sizeof(T2) << endl;
return num;
}
Это работает хорошо. Но когда я пытаюсь добавить это
template<typename T1, typename T2> template<> int MyClass<T1, T2>::DoSomething<0>()
{
cout << "This is ZERO!!!" << endl;
cout << "sizeof(T1) = " << sizeof(T1) << endl;
cout << "sizeof(T2) = " << sizeof(T2) << endl;
return num;
}
Я получаю ошибки компилятора: неверная явная специализация перед «>» идентификатором шаблона токена «DoSomething <0>» для «int MyClass :: DoSomething ()» не соответствует ни одному объявлению шаблона
Я использую g ++ 4.6.1 Что мне делать?