title: unsigned long vs size_t causes function overload fail
body: <p>I defined a function:</p>
  
  <pre><code>void myfunc(size_t param1, size_t param2){
  ...
  }
  </code></pre>
  
  <p>it works fine. But when I try to overload this function</p>
  
  <pre><code>void myfunc(unsigned long param1, unsigned long param2){
  ...
  }
  </code></pre>
  
  <p>It fails to compile with the following message:
  error: myfunc(unsigned long param1, unsigned long param2) cannot be overloaded.</p>
  
  <p>How can I solve this problem without staic_cast the input parameters to size_t?</p>
  
  <p>thanks!</p>