Как можно представить список функций с разными результатами и вызвать их?
У меня есть известный на этапе компиляции список функций, возвращающих разные типы (но принимающих одинаковые). Как можно представить такой гетерогенный список, чтобы потом проитерироваться по нему и получить список значений (например, в tuple)?
int foo();
double bar();
constexpr auto functions = {foo, bar, foo, bar};
auto results;
for (function: functions) {
results.push_back(function());
}
// results is equivalent to std::tuple{foo(), bar(), foo(), bar()}
Источник: Stack Overflow на русском