title: Difference when omitting the C++ template argument list
body: <p>When can you omit the C++ template argument list? For example in Visual Studio 2010 this piece of code compiles fine:</p>
  
  <pre><code>template&lt;class T&gt;
  Vec2&lt;T&gt; Vec2&lt;T&gt;::operator+ (const Vec2 &amp;v) const
  {
      return Vec2(x + v.x, y + v.y);
  }
  </code></pre>
  
  <p>If you inline the code, it actually compiles without any argument list. But is this really the same as the following version?</p>
  
  <pre><code>template&lt;class T&gt;
  Vec2&lt;T&gt; Vec2&lt;T&gt;::operator+ (const Vec2&lt;T&gt; &amp;v) const
  {
      return Vec2&lt;T&gt;(x + v.x, y + v.y);
  }
  </code></pre>