title: Template parameters that require deduced argument *before* user arguments
body: <p>I have a function where I'd like the arguments partially-deduced and the remaining, mostly non-type arguments, are given by the user (as a way of enforcing them being given at compile-time). However, the type of this non-type user-sourced argument is deduced, therefor it must come before the user arguments. That breaks the ability of the user to have the first argument deduced. I have a small example below, that does not compile, demonstrating what I'm talking about.</p>
  
  <pre><code>template &lt;typename T, T N&gt;
  class int_const {};
  
  template &lt;typename T, T M, T N&gt;
  auto add(int_const&lt;T, N&gt; a) {
      return int_const&lt;T, N + M&gt;();
  }
  
  int main(void) {
      int_const&lt;int, 1&gt; a;
      add&lt;32&gt;(a); 
      // add&lt;int, 32&gt;(a); does compile, but requires the user to know or extract that first argument
      return 0;
  }
  </code></pre>
  
  <p>Is there anyway to support the template function call as it is seen in <code>main()</code>?</p>