title: How do I get the copy constructor called over a variadic constructor?
body: <p>In the following code, the variadic constructor is called twice.  How can I get the copy constructor to be called instead of the single argument version of the variadic constructor when appropriate?</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  struct Foo
  {
      Foo(const Foo &amp;)
      {
          std::cout &lt;&lt; "copy constructor\n";
      }
  
      template&lt;typename... Args&gt;
      Foo(Args&amp;&amp;... args)
      {
          std::cout &lt;&lt; "variadic constructor\n";
      }
  
      std::string message;
  };
  
  int main()
  {
      Foo f1;
      Foo f2(f1); // this calls the variadic constructor, but I want the copy constructor.
  }
  </code></pre>