Overload resolution for multiply inherited operator()

First, consider this C++ code: #include <stdio.h> struct foo_int { void print(int x) { printf("int %d\n", x); } }; struct foo_str { void print(const char* x) { ...