template <size_t Index> struct unpacked {
template <typename Lamda, typename PacketParams, typename... Params>
static void step(Lamda &cb, PacketParams &pp, Params... par) {
unpacked<Index - 1>::step(cb, pp, std::get<Index - 1>(pp), par...);
}
template <typename Lamda, typename PacketParams>
static void step(Lamda &cb, PacketParams &pp) {
unpacked<Index>::step(cb, pp, std::get<Index>(pp));
}
};
template <> struct unpacked<0> {
template <typename Lamda, typename PacketParams, typename... Params>
static void step(Lamda &cb, PacketParams &pp, Params... par) { cb(par...); }
};
1.PacketParams 是一個std::tuple 類型。
例如 std::tuple<std::string, int, long> args{"1", 2, 3};