Re: Explicit specialization [ Template ]
AY wrote:
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.
But a reference isn't an address/pointer, so it does not match a
char&.
// Isn't this the correct way of passing char* to char& ?
//swapvalues(*srcCh, *destCh); // Rt way of calling
This is much better (for swapping ONE char, which is not part of a
const string literal - another problem!).
Bo Persson
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]