>>180
調べてないけど、構造体直接は原理的に無理だと思う。

そういう場合には可変長テンプレートを使う。構文キモいけど。
template <typename H, typename... T>
void func(int type, H&& value, T&&... rest) {
auto&& pack = std::forward<H>(value);
func(type, rest...);
}