title: std::function variable arguments in one vector/map
body: <p>how could one do this in c++ today without using two separate holders?</p>
  
  <pre><code>typedef std::function&lt;void(int a, int b)&gt; f1; 
  typedef std::function&lt;void(int a)&gt; f2; 
  
  std::vector&lt;f1&gt; m;
  
  void add(f1 f)
  {
      m.push_back(f);
  }
  
  void add(f2 f)
  {
      // add one more (unused) parameter to f2 so we can add f2 to f1 vector holder?
  }
  </code></pre>
  
  <p>can we somehow overload f1 function to include different set of parameters?
  could this be solved by variadic templates nowdays or something similar?</p>