title: Using Boost.Preprocessor to reduce this code repitition
body: <p>Consider the following code:</p>
  
  <pre><code>template&lt;typename T0&gt;
  void send( const std::string&amp; func, const T0&amp; t0 )
  {
     std::ostringstream s;
     s &lt;&lt; func &lt;&lt; ": " &lt;&lt; t0;
     sendMessage( s.str() );
  }
  
  template&lt;typename T0, typename T1&gt;
  void send( const std::string&amp; func, const T0&amp; t0, const T1&amp; t1 )
  {
     std::ostringstream s;
     s &lt;&lt; func &lt;&lt; ": " &lt;&lt; t0 &lt;&lt; "," &lt;&lt; t1;
     sendMessage( s.str() );
  }
  
  template&lt;typename T0, typename T1, typename T2&gt;
  void send( const std::string&amp; func, const T0&amp; t0, const T1&amp; t1, const T2&amp; t2 )
  {
     std::ostringstream s;
     s &lt;&lt; func &lt;&lt; ": " &lt;&lt; t0 &lt;&lt; "," &lt;&lt; t1 &lt;&lt; "," &lt;&lt; t2;
     sendMessage( s.str() );
  }
  </code></pre>
  
  <p>etc...</p>
  
  <p>I need this up to something like 15 arguments.</p>
  
  <p>I'm just wondering if it's possible to use Boost.Preprocessor to simplify this repetition, and how I would go about it. I looked through the docs but it's fairly confusing.</p>