шаблон класса - специализация функции-члена
Вот пример кода:
template<class T>
class A
{
public:
A(T t): x(t){}
T getX();
private:
T x;
};
template<class T>
T A<T>::getX()
{
return x;
}
// member function specialization
template<> // works with and without template<>
long A<long>::getX()
{
return 1000L;
}
Приведенный выше код работает с и безШаблон <> до специализации функции члена. Почему ? Какая разница в таком случае?
Edit1: Я использую этот шаблон таким образом (компилятор VS 2012):
A<int> a1(1);
cout<<a1.getX()<<endl;
A<long> a2(1);
cout<<a2.getX()<<endl;