title: Difference between references and values in deduction guides
body: <p>Considering type <code>A</code>:</p>
  
  <pre><code>template &lt;typename T, size_t N&gt;
  struct A
  {
      T arr[N];
  };
  </code></pre>
  
  <p>Is there any difference between C++17 user-defined <a href="https://en.cppreference.com/w/cpp/language/class_template_argument_deduction" rel="nofollow noreferrer">deduction guides</a></p>
  
  <pre><code>template &lt;typename T, typename ... Ts&gt;
  A(const T&amp;, const Ts&amp; ...) -&gt; A&lt;T, 1 + sizeof...(Ts)&gt;;
  </code></pre>
  
  <p>and</p>
  
  <pre><code>template &lt;typename T, typename ... Ts&gt;
  A(T, Ts ...) -&gt; A&lt;T, 1 + sizeof...(Ts)&gt;;
  </code></pre>
  
  <p>?</p>
  
  <p>Or, in other words is there any difference between const references and values in deduction guides?</p>
  
  <hr>
  
  <p>Please note that the question is not about template function type deduction, but about the new C++17 feature, user-defined deduction guides for class template argument deduction, so you can simply declare <code>A instance{1,2,3}</code> instead of <code>A&lt;int, 3&gt; instance{1,2,3}</code>.</p>