title: variadic form is ambiguous with the nonvariadic form for a single argument
body: <p>why in the following code compiler <strong>doesn't</strong>   complain because of ambiguity? </p>
  
  <pre><code>template &lt;typename T&gt;
  void print (const T&amp; arg)
  {
  std::cout &lt;&lt; arg &lt;&lt; std::endl;
  }
  template &lt;typename T, typename... Types&gt;
  void print (const T&amp; firstArg, const Types&amp;... args)
  {
  std::cout &lt;&lt; firstArg &lt;&lt; std::endl;    // print first argument
  print(args...);                       // call print() for remaining arguments
  }
  </code></pre>