overloaded function with no contextual type information
Compiler does not know, which overload of cb to chose.2) Even if it did know, it would not convert from void* to, say void(*)(int), without any explicit conversion. However, it can deduce it if you give compiler enough information: