title: How will Concepts-Lite interact with variadic templates?
body: <p>I watched Bjarne Strustrup's talk in <a href="http://channel9.msdn.com/Events/GoingNative/2013/Opening-Keynote-Bjarne-Stroustrup" rel="nofollow">Going Native 2013</a> and he gives the following example for the upcoming concepts-lite feature of C++.</p>
  
  <pre><code>void sort(Container&amp; c); // terse notation
  
  // Expands to
  template &lt;Container __Cont&gt;
    void sort(__Cont&amp; c); // shorthand notation
  
  // Expands to 
  template &lt;typename __Cont&gt;
    requires Container&lt;__Cont&gt;()
      void sort(__Cont &amp; c);
  </code></pre>
  
  <p>My question is how will this work with variadic templates?</p>
  
  <p>Say I want to define a variadic <code>maximum</code> function using a <code>Comparable</code> concept. Will the following syntax be accepted?</p>
  
  <pre><code>auto maximum(Comparable a)
  {
       return a;
  }
  
  auto maximum(Comparable c, Comparable... rest)
  {        
      return std::max(a, maximum(rest...));
  }
  </code></pre>
  
  <p>If so will <code>Comparable...</code> mean that all the elements in the parameter pack are the same type or just that they are all <code>Comparable</code> types so that the pack may include both <code>int</code> and <code>string</code>? (which are both comparable but not to each other)</p>
  
  <p>Curious minds want to know.</p>