Explicit specialization [ Template ]
Hi there,
I'm trying to Override a generic version of swapvalue for char. But it
still call's the generic version. Here is the sample code -
template<typename T>
void swapvalues(T& src, T& dest)
{
T temp;
temp = src;
src = dest;
dest = temp;
cout<<"Inside swapvalue [template]"<<endl;
}
// Override of generic version.
void swapvalues(char& src, char& dest)
{
/*
char* temp = NULL;
*temp = src;
src = dest;
dest = *temp;
*/
cout<<"Inside swapvalue [char]"<<endl;
cout<<"src = "<<src<<" : dest = "<<dest<<endl;
}
int main()
{
int i=5, j = 7;
char* srcCh = "ABC";
char* destCh = "XYZ";
swapvalues(srcCh, destCh); // Template version is called, despite
address being passed.
// Isn't this the correct way of passing char* to char& ?
//swapvalues(*srcCh, *destCh); // Rt way of calling
cout<<srcCh<<" : "<<destCh<<endl;
return 0;
}
I thought this was the correct way of assigning char* to char&.
char* srcCh = "ABC"
char& refCh = *srcCh; // OK ! Reference is pointing to "ABC";
A tiny hint [ or if time permits a little elaboration ] on why the
explicit specialization is ignored is greatly appreciated.
Thanks in advance,
- AY.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]