title: Static cast in a template
body: <p>I have a template with this static cast operator:</p>
  
  <pre><code>operator Vector2&lt;float&gt;() const
  {
      return Vector2&lt;float&gt;(x, y);
  }
  </code></pre>
  
  <p>This implies to me that if I cast as a float, it will return a float variant of the class, even if <code>x</code> and <code>y</code> are integers from an integer variant. But apparently not so:</p>
  
  <p>As a test:</p>
  
  <pre><code>Vector2&lt;float&gt;position=static_cast&lt;float&gt;(Vector2&lt;int&gt;(5,5));
  </code></pre>
  
  <p>I get the compiler error for *No matching conversion for static_cast from Vector2 to float*.</p>
  
  <p>Yet, the conversion is specified above, is it not, as a static cast overload?</p>