Another mildly obscure feature of lambdas is the ability to capture a variadic number of parameters.<p>Example (slightly contrived):<p><pre><code>  #include &lt;future&gt;
  #include &lt;iostream&gt;

  template&lt;typename... Args&gt;
  void log(Args&amp;&amp;... args) {
      (std::cout &lt;&lt;  ...  &lt;&lt; args) &lt;&lt; std::endl;
  }

  template&lt;typename... Args&gt;
  std::future&lt;void&gt; log_async(Args&amp;&amp;... args) {
    return std::async(std::launch::async, [args...] { log(args...); });
  }

  int main()
  {
      auto f = log_async(1, 2, 3);
      f.wait();
  }</code></pre>