Правильный способ кодирования этой конструкции:
typedef int TypeA;
typedef float TypeB;
class MyClass
{
template <typename T>
T myFunction( int a, int b );
};
template <>
inline TypeA MyClass::myFunction<TypeA>(int a, int b) {}
template <>
inline TypeB MyClass::myFunction<TypeB>(int a, int b) {}
Обратите внимание, что функция-член шаблона должна быть объявлена внутри объявления класса, но специализации должны быть определены вне ее , на уровне пространства имен.