I get a queue of events which must contain a class with generic variables. In order to do that I tried to use the tuples. I used variadic templates to generate my tuples but I can't put them in my queue because of their types which aren't the same. Could you give me some advise about how to do this?
#include <type_traits>
#include <iostream>
#include <vector>
#include <iostream>
#include <tuple>
#include <utility>
#include <queue>
class Logs
{
public:
Logs() {}
template <class T, class... Values>
void write(T data, Values&&... values) {
auto save = std::tuple_cat(_t, std::make_tuple(data)); // I would like to save the return in a variable class
write(values...);
}
void write() {
// the end
// _queue.push(save);
}
std::tuple& getTuple() { return _t;}
private:
std::tuple<> _t;
std::queue<std::tuple<>> _queue;
};
#include <iostream>
int main(int ac, char **av) {
Logs log;
Logs log2;
log.write(4, "42");
log.write(Logs(), 4.5f, 42, "toto");
log.write({"hello", "titi"}, 84, "foo");
// std::cout << std::get<0>(log.getTuple()) << std::endl;
return 0;
}
Which could be the type of _t
and _queue
?
I would like to push in my queue get one time a std::tuple<int, std::string, Log. float, ...>
then a std::tuple<std::vector<std::string>, int, long>,
etc. .