dimanche 25 novembre 2018

Two variadic template arguments with the same size

I wanna implement a Print function which works this:

Print<1, 3>("Hello", "World");

and I hope that it will print "Hello" one time and "World" 3 times.I wonder how to implement it. Below is my stupid code, of course it failed when compiling:

template <unsigned int n, unsigned int ...n_next,
          typename T, typename ...Ts>
void Print(T & t, Ts & ... ts)
{
    for(int i = 0; i < n; i++)
    {
        std::cout << t << " ";
    }
    std::cout << std::endl;

    Print<n_next..., ts...>(ts...);
}

template <unsigned int n, typename T>
void Print(T & t)
{
    for(int i = 0; i < n; i++)
    {
        std::cout << t << " ";
    }
    std::cout << std::endl;
}

Aucun commentaire:

Enregistrer un commentaire