title: Variadic macros
body: <p>Is there any way to write a macro like this:</p>
  
  <pre><code>#define G(x1, x2, ... , xn) f(x1), f(x2), ... , f(xn)
  </code></pre>
  
  <p>Or do I need to define this for each individual <code>n</code>?</p>
  
  <p>C++0x answers are ok.</p>
  
  <p><strong>Edit:</strong> I'm asking how to create a macro of this form, not a macro that takes a variable number of arguments generally.</p>
  
  <p><strong>Goal:</strong>: So I can do something like the following:</p>
  
  <pre><code>#define MAKE_TUPLE(x1, x2, ... , xn) mytuple&lt;decltype((x1)), decltype((x2)), ... , decltype((xn))&gt;{x1, x2, ... , xn}
  </code></pre>
  
  <p>So this <code>mytuple</code> can be created without and moves and copies, nor unnecessary references to temporaries which could have been created in place using aggregate construction.</p>