title: overloaded member functions for a particular template specialisation
body: <p>I have a class tPoint that would be implemented having different base types so</p>
  
  <pre><code>template&lt;typename T&gt;class tPoint{
     T x;
     T y;
  public:
     void Set(T ix, T iy){x=ix;y=iy;}
  };
  </code></pre>
  
  <p>When the type T is int, <code>tPoint&lt;int&gt;</code>, I want a special Set(float, float) so I can round the values before assignation.</p>
  
  <p>I thought that with specialisation I could:</p>
  
  <pre><code>template&lt;&gt; void tPoint&lt;int&gt;::Set(float ix,float iy){x=ix+.5; y=iy+.5;}
  </code></pre>
  
  <p>This way the compiler complains that there's no matching function in the class definition.</p>
  
  <p>But if I declare in the class Set(float,float) then it says that's already defined (when it compiles for T =float)</p>
  
  <p>I hope I made myself clear, what would be a clean approach to this or I'm doing something wrong? thanks!</p>