#include <iostream>
using std::cout;
using std::endl;
template <class T> class Test {
T a;
public:
Test(T _a) {
cout << "template <class T> class Test" << endl;
a = _a;
}
T getVal() { return a; }
};
template <> class Test<int> {
int a;
public:
Test(int _a) {
cout << "template <> class Test<int>" << endl;
a = _a + _a;
}
int getVal() { return a; }
};
int main()
{
Test<double> dobj(3.14);
cout << dobj.getVal() << endl;
Test<long> lobj(88888889);
cout << lobj.getVal() << endl;
Test<int> iobj(999);
cout << iobj.getVal() << endl;
return 0;
}
/*
run:
template <class T> class Test
3.14
template <class T> class Test
88888889
template <> class Test<int>
1998
*/