title: Skip template parameters
body: <p>How come that I'm allowed to skip template parameters(see comments)? And why am I getting a linking error?</p>
  
  <pre><code>template &lt;typename T&gt;
  class Number {
  public:
      Number(int val) {}
  
      // Why can I skip template arguments here?
      friend Number operator* (Number first, Number second);
  };
  
  template&lt;typename T&gt;
  Number&lt;T&gt; operator* (Number&lt;T&gt; lhs, Number&lt;T&gt; rhs) {
      return Number&lt;T&gt;(42);
  }
  
  int main() {
      Number&lt;int&gt; num1(22), num2(23);
      Number&lt;int&gt; res = num1 * num2;
  }
  </code></pre>