C++ Class template Overloading a Function Template
#include <iostream> using namespace std; template <typename T> T AbsoluteValue(T x) { cout << "(using first)" << endl; if (x >= 0) return x; else// ww w .j a v a 2 s . c o m return -x; } template <typename T> T AbsoluteValue(T *x) { cout << "(using second)" << endl; if (*x >= 0) return *x; else return -(*x); } int main() { int n = -3; cout << AbsoluteValue<int>(n) << endl; float *xptr = new float(-4.5); cout << AbsoluteValue<float>(xptr) << endl; cout << AbsoluteValue<float>(10.5) << endl; return 0; }