Как-то я не понимаю, как расширяются пакеты параметров вариационного шаблона. Что не так с этим кодом?
#include <iostream>
template <typename T>
struct print_one
{
static void run(const T& t)
{
std::cout << t << ' ';
}
};
template<typename... Args>
void print_all(Args&&... args)
{
// the next line doesn't compile:
print_one<Args>::run(std::forward<Args>(args))...;
}
int main()
{
print_all(1.23, "foo");
}
Кланг говорит: Expression contains unexpanded parameter packs 'Args' and 'args'
. Почему?