#include <functional>
#include <iostream>
#include <unordered_map>
void (*fp1)() = []() {};
void (*fp2)() = []() { std::cout << "In fp2" << std::endl; };
void fp3() { std::cout << "In fp3" << std::endl; };
std::unordered_map<std::string, const std::function<void(void)>> table{
{"1", fp1},
{"2", fp2},
{"3", fp3},
};
void calltable (const std::string& condition, std::unordered_map<std::string, const std::function<void(void)>>& table) {
if (table.count(condition)) {
table[condition]();
}
}
int main(int argc, char *argv[]) {
std::string condition = "1";
calltable(condition, table);
condition = "2";
calltable(condition, table);
condition = "3";
calltable(condition, table);
}