title: Is it possible to not specify all template parameters if one of them is deduced?
body: <p>Suppose I have a function like this:</p>
  
  <pre><code>template &lt;typename T&gt;
  void f(T&amp; x);
  </code></pre>
  
  <p>I can use it without specifying the type because of the type deduction:</p>
  
  <pre><code>f(5.0f); // same as f&lt;float&gt;(5.0f);
  </code></pre>
  
  <p>Suppose I change the function:</p>
  
  <pre><code>template &lt;typename T, int N&gt;
  void f(T&amp; x);
  </code></pre>
  
  <p>I now have to call it like this even if the type can be deduced</p>
  
  <pre><code>f&lt;float, 5&gt;(5.0f);
  </code></pre>
  
  <p>But I'd like to have something like this:</p>
  
  <pre><code>f&lt;auto, 5&gt;(5.0f); // or something like f&lt;5&gt;
  </code></pre>
  
  <p>So far I've found a way to do this:</p>
  
  <pre><code>template &lt;int N&gt;
  struct F {
      template &lt;typename T&gt;
      static void f(T&amp; x) {
           ...
      }
  }
  </code></pre>
  
  <p>So I can now use:</p>
  
  <pre><code>F&lt;5&gt;::f(5.0f);
  </code></pre>
  
  <p>Is there any other way to do it?</p>