У меня есть несколько функций с одинаковыми типами параметров и номерами, но с разными типами возвращаемых значений. Чтобы найти эти функции, я использую map для хранения их взаимосвязи отображения, но для этого мне нужно определить две карты. код, как показано ниже:
double func_double1(int a, int b) {
return 0.0;
}
double func_double2(int a, int b) {
return 0.0;
}
int func_int1(int a, int b) {
return 0;
}
int func_int2(int a, int b) {
return 0;
}
using GetDouble = std::function<double(int, int)>;
using GetInt = std::function<int(int, int)>;
std::unordered_map<std::string, GetDouble> double_factory = {
{"func_double1", func_double1},
{"func_double2", func_double2}
};
std::unordered_map<std::string, GetInt> double_factory = {
{"func_int1", func_int1},
{"func_int2", func_int2}
};
Может ли std :: function хранить разные сигнатуры функций?
Могу ли я использовать дженерики для решения этой проблемы?
Или есть способ лучше ?