#include <iostream>
#include <string>
#include <tuple>

struct blau_t 
{
    std::string str_;
    
    explicit blau_t(std::string str) : str_(str) {}
};

void f(int i, int j) { std::cout << "f(" << i << "," << j  <<")\n"; }
void g(int i, double j) { std::cout << "g(" << i << "," << j  <<")\n"; }
void h (blau_t blau) { std::cout << "h -> " << blau.str_ << "\n";}

int main() 
{
    auto fun_array = std::make_tuple(f,g,h);
    
    std::get<0> (fun_array) (1,2);
    std::get<1> (fun_array) (1,2.5);
    std::get<2> (fun_array) (blau_t("Hallo"));
    
    return 0;
}