Specializing function templates outside class temp. definition - what is the correct way of doing t
- by LoudNPossiblyRight
I am attempting to specialize a function template that is a member of a template class. The two of them have different template parameters. The template function specialization inside the temp. class definition is never called and the one func. spec. outside the class definition does not even compile.
Should i expect this to work in the first place, and if so, what do i have to change in this code to both compile and make it work correctly:
using VS2010
#include<iostream>
using namespace std;
template <typename T>
class klass{
public:
template <typename U>
void func(const U &u){
cout << "I AM A TEMPLATE FUNC" << endl;
}
//THIS NEVER GETS CALLED !!!
template <>
void klass<T>::func(const string &s){
cout << "I AM A STRING SPECIALIST" << endl;
}
};
//THIS SPECIALIZATION WILL NOT COMPILE !!!
template <typename T> template <>
void klass<T>::func(const double &s){
cout << "I AM A DOUBLE SPECIALIST" << endl;
}
int main(){
double d = 3.14159265;
klass<int> k;
k.func(1234567890);
k.func("string");
k.func(3.14159265);
return 0;
}