TITLE: The three character types are distinct for overloading [ This example adapted from "C++ Gotchas", tutorial notes copyright by Tom Cargill. ] class C { public: void f (char); void f (unsigned char); void f (signed char); ... }; int main () { char c; unsigned char u; signed char s; C x; x.f (c); // ok x.f (u); // ok x.f (s); // ok x.f (1); // ambiguous return 0; } For more information, see ARM page 310.