dimanche 26 novembre 2017

how to expand a statement multiple times based on template variable arguments

I have the following pseudo code:

template <typename... Ts>
void f(int index) {
    std::vector<std::function<void>> funcs;

    funcs.push_back([](){ std::cout << typeid(type_1).name() << std::endl; });
    funcs.push_back([](){ std::cout << typeid(type_2).name() << std::endl; });
    funcs.push_back([](){ std::cout << typeid(type_3).name() << std::endl; });
    funcs.push_back([](){ std::cout << typeid(type_4).name() << std::endl; });

    funcs[index]();
}

how can I expand the parameter pack in order to achieve something like this? I mean - how can I get 4 push_back() calls if there are 4 parameters in the template pack, and also have the different types in the different lambdas? I don't know the syntax..

Aucun commentaire:

Enregistrer un commentaire