#include <iostream>
void func(int a)
{
std::cout << a;
}
struct evaluate{ template <typename... A> constexpr evaluate(A&&...) {} };
template <int... bla>
void foo()
{
evaluate{(func(bla), 0)... };
}
int main()
{
foo<1, 2, 3>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnZvaWQgZnVuYyhpbnQgYSkKewoJc3RkOjpjb3V0IDw8IGE7Cn0KCnN0cnVjdCBldmFsdWF0ZXsgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEE+IGNvbnN0ZXhwciBldmFsdWF0ZShBJiYuLi4pIHt9IH07CiAKdGVtcGxhdGUgPGludC4uLiBibGE+CnZvaWQgZm9vKCkKewoJZXZhbHVhdGV7KGZ1bmMoYmxhKSwgMCkuLi4gfTsKfQoKCmludCBtYWluKCkKewoJZm9vPDEsIDIsIDM+KCk7Cn0=