title: Generics types in a queue
body: <p>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?</p>
  
  <pre><code>#include &lt;type_traits&gt;
  #include &lt;iostream&gt;
  
  #include &lt;vector&gt;
  #include &lt;iostream&gt;
  #include &lt;tuple&gt;
  #include &lt;utility&gt;
  
  #include &lt;queue&gt;
  
  class Logs
  {
  public:
    Logs() {}    
  
    template &lt;class T, class... Values&gt;
    void write(T data, Values&amp;&amp;... 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&amp; getTuple() { return _t;}
  private:
    std::tuple&lt;&gt; _t;
    std::queue&lt;std::tuple&lt;&gt;&gt; _queue;
  
  };
  
  
  #include &lt;iostream&gt;
  
  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 &lt;&lt; std::get&lt;0&gt;(log.getTuple()) &lt;&lt; std::endl;
    return 0;
  }
  </code></pre>
  
  <p>Which could be the type of <code>_t</code> and <code>_queue</code> ?
  I would like to push in my queue get one time a <code>std::tuple&lt;int, std::string, Log. float, ...&gt;</code> then a <code>std::tuple&lt;std::vector&lt;std::string&gt;, int, long&gt;,</code> etc. .</p>