Generic C++

#include 
using namespace std;
template  X myabs(X val)
{
  return val < 0 ? -val : val;
}
int main()
{
  cout << myabs(-10) << '\n';    // integer abs
  cout << myabs(-10.0) << '\n';  // double abs
  cout << myabs(-10L) << '\n';   // long abs
  cout << myabs(-10.0F) << '\n'; // float abs
  return 0;
}