Мы все знаем, что вы можете перегрузить функцию в соответствии с параметрами:
int mul(int i, int j) { return i*j; }
std::string mul(char c, int n) { return std::string(n, c); }
Можете ли вы перегрузить функцию в соответствии с возвращаемым значением? Определите функцию, которая возвращает разные вещи в зависимости от того, как используется возвращаемое значение:
int n = mul(6, 3); // n = 18
std::string s = mul(6, 3); // s = "666"
// Note that both invocations take the exact same parameters (same types)
Можно предположить, что первый параметр находится в диапазоне 0-9, нет необходимости проверять ввод или обрабатывать ошибки.