Il est probablement plus facile d'expliquer ce que je veux dire par un exemple. Imagine un modèle suivant:
template <class... Args>
std::tuple<Args...> foo();
Elle peut être invoquée, par exemple, comme ceci:
auto ret = foo<int, bool>();
Mais que faire si je veux passer des arguments supplémentaires à la fonction, sur la base du nombre de variadic template arguments? Par exemple, disons que je veux passer un littéral de chaîne de caractères pour chaque Args:
auto ret = foo<int, bool>("a", "b");
Le problème avec cela, c'est qu'il ne semble pas possible d'étendre la non-variadic arguments, donc ce qui suit n'est évidemment pas à compiler:
template <class... Args>
std::tuple<Args...> foo(const char*... names);
Est-il de toute façon sensée pour mettre en œuvre cette?