I was trying to implement some generic functions for my protocol working over UDP sockets for game engines (for learning purposes), when I have stumpled upon a need to have a function that must accept arbitrary number of tuples, every one of which might have their own number of different parameters. Example of usage:
int main() {
...
socket.form_packet(std::tuple{"Hello", 1}, std::tuple{3.1415, var, 'g'});
}
I've tried this approach:
template<typename ...Values>
void form_packet(const std::tuple<Values...>& tuple)
{
handle_single_tuple(tuple);
}
template<template<typename ...> typename ...Tuple, typename ...Values>
void form_packet(const std::tuple<Values...>& tuple, const Tuple<Values...>&... tuples)
{
handle_single_tuple(tuple);
form_packet(tuples...);
}
But this kind of implementation supports only arbitrary number of tuples, where each one can have the same types (Values...) of its members.
I wonder if what I want to do is possible to be done in C++. If yes, what needs to be improved in my code mentioned above?
Thanks in advance.