TITLE: Function template argument types must match call exactly [ This example adapted from "C++ Gotchas", tutorial notes copyright by Tom Cargill, p. 64 ] #include template inline T max (T a1, T a2) { return (a1 > a2) ? a1 : a2; } int main () { cout << max (033, 'x'); // error return 0; } Conversions are currently not applied to template function arguments. The argument types must match exactly the instantiated function parameter types (with only a few exceptions). This part of the language is changing under the draft standard.