Вероятно, легче объяснить, что я имею в виду на примере. Представьте следующий шаблон:
template <class... Args>
std::tuple<Args...> foo();
Его можно вызвать, например, следующим образом:
auto ret = foo<int, bool>();
Но что, если я хочу передать дополнительные аргументы функции, исходя из числа аргументов вариационного шаблона? Например, допустим, что я хочу передать литерал строки символов для каждого Args:
auto ret = foo<int, bool>("a", "b");
Проблема с этим заключается в том, что не представляется возможным расширять невариантные аргументы, поэтому следующее, очевидно, не компилируется:
template <class... Args>
std::tuple<Args...> foo(const char*... names);
Есть ли разумный способ реализовать это?